2012-02-14 2 views
1

Когда я использую sqlite3 базы данных с SQLAlchemy библиотеки, я получил эту ошибкуSqlite базы данных с питоном 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.\[email protected]', '123456') 

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

呆呆 [email protected]  11111                
    è?“言 [email protected]  11111 
[email protected]?€?  11111 

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

Кто-нибудь скажет мне, как обойти эту ошибку?

+0

Для тех, кто испытывает ту же проблему, пожалуйста, проверьте мой ответ http://stackoverflow.com/questions/23876342/sqlalchemy-programmingerror-can-interpret-8-bit-bytestrings/38513385#38513385 – cdagli

ответ

3

пытаются изменить '\xebE\xc2\xe4.\[email protected]' к u'\xebE\xc2\xe4.\[email protected]'

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

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

+0

Я использую python2.7 и Я пытаюсь вставить sql-инструкцию вместо использования ORM-модели для импорта данных. Позади проблемы науки вызывают проблемы – CodeFarmer

+1

вы пытались 'u '\ x ...'' или 'u" \ N {EURO SIGN} "'? –

Смежные вопросы