Ошибка не-ascii символа базы данных Sqlite с библиотекой Python SQLalchemy - PullRequest
1 голос
/ 14 февраля 2012

Когда я использую базу данных sqlite3 с библиотекой sqlalchemy, я получаю эту ошибку

sqlalchemy.exc.ProgrammingError: (ProgrammingError) 
You must not use 8-bit bytestrings unless you use a text_factory that can
interpret 8-bit bytestrings (like text_factory = str). 
It is highly recommended that you instead just switch your application 
to Unicode strings. 
u'INSERT INTO model_pair (user, password) VALUES (?, ?)' ('\xebE\xc2\xe4.\t312874@gg.com', '123456')

и вот некоторые тестовые данные:

 呆呆 3098920@gg.com        11111                                                             
  �言    9707996@gg.com        11111 
wwwj55572@gg?€?       11111

Я настроилкодировка базы данных как utf-8 или gbk, но безуспешно при вставке, я пытаюсь использовать str.decode ('gbk'), она будет зависать на символе как € и получит ошибку, как указано выше.

кто нибудь подскажет как обойти эту ошибку?

1 Ответ

3 голосов
/ 14 февраля 2012

попробуйте изменить '\xebE\xc2\xe4.\t312874@gg.com' на u'\xebE\xc2\xe4.\t312874@gg.com'

также вы можете попытаться сделать '\xebE\xc2\xe4.\t312874@gg.com'.decode("utf-8"), но выдает ошибку «недопустимый байт продолжения», возможно, ваша строка недопустима utf-8 в конце концов?

Кстати, упомяните, что вы используете Python 2.x или 3.x, есть разница.

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