python SQLalchemy 库的 Sqlite 数据库非 ascii 字符错误

发布于 2025-01-05 03:25:26 字数 1151 浏览 1 评论 0原文

当我将 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.\[email protected]', '123456')

,这是一些测试数据:

 呆呆 [email protected]        11111                                                             
  è?“言    [email protected]        11111 
wwwj55572@gg?€?       11111

我已将数据库编码配置为 utf-8 或 gbk,但都没有成功 插入时,我尝试 str.decode('gbk'),它会卡在像 € 这样的字符上并收到如上所述的错误。

有人告诉我如何解决这个错误吗?

When i use sqlite3 database with sqlalchemy library, i got this error

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')

and here is some test data:

 呆呆 [email protected]        11111                                                             
  è?“言    [email protected]        11111 
wwwj55572@gg?€?       11111

I have configured database encoding as utf-8 or gbk but neither success
when insert, i try str.decode('gbk'), it will stuck on char like € and get error like above.

anyone tell me how get around this error ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

肥爪爪 2025-01-12 03:25:26

尝试更改 '\xebE\xc2\xe4.\[电子邮件受保护]< /a>'u'\xebE\xc2\xe4.\[电子邮件受保护]'

另外,你可以尝试这样做'\xebE\xc2\xe4.\[电子邮件受保护] '.decode("utf-8"),但它给出了一个错误“无效的连续字节”,也许你的字符串不是有效的 utf-8?

顺便说一句,请注意您正在运行 python 2.x 或 3.x,这是有区别的。

try to change '\xebE\xc2\xe4.\[email protected]' to u'\xebE\xc2\xe4.\[email protected]'

also, you could try to do '\xebE\xc2\xe4.\[email protected]'.decode("utf-8"), but it gives an error "invalid continuation byte", perhaps your string is not valid utf-8 after all?

btw, do mention is you are running python 2.x or 3.x, there is a difference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文