Как остановить sqlite от возврата символа Юникод - PullRequest
0 голосов
/ 04 июня 2011

Я могу ошибаться, но так как я вернулся к python 2.7 из 3.2, я заметил, что sqlite3 делает то, что мне не нравится ...

Когда я использую свой метод cursor.fetch, он возвращает (1, x, x, x) из моей таблицы

но в 2.7 его возвращение (1, u'x ', u'x', u'x ')

Как мне заставить его перестать возвращать это 'u' в моих запросах? Мне нужно хранить возвращаемые значения в переменных, и это раздражает необходимость решения проблемы.

Редактировать: Путем небольшого исследования я нашел способ ...

db.text_factory = str

если есть лучший способ, пожалуйста, сообщите мне, поскольку я действительно даже не знаю, что делает этот метод, не хочу менять неправильную вещь

1 Ответ

2 голосов
/ 04 июня 2011

Вздох.

(1, u'x' ,u'x' ,u'x') - это кортеж. Этот кортеж содержит четыре элемента. Одна из них является целым числом, остальные три являются строками Unicode, как указано u.

Если вы напечатаете весь кортеж сразу, он будет выглядеть так, как указано выше. Но это глупо, потому что, вероятно, вы действительно хотите что-то сделать с содержимым кортежа, а не с самим кортежем.

Если бы вы сделали print result[1], вы бы увидели, что на выходе будет просто x: u не отображается, когда вы на самом деле его печатаете. Это правильное поведение.

Если вы используете код, который вы публикуете, как только вы извлекаете не-ASCII-значение из вашего хранилища данных - например, имя которого содержит символ с акцентом - все пойдет ужасно неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...