gpt4 book ai didi

Python Unicode、Pyramid、UTF-8 MySQL 表问题

转载 作者:行者123 更新时间:2023-11-29 05:33:21 26 4
gpt4 key购买 nike

我有一个使用 SQLAlchemy 与 MySQL 表对话的 Python 2 Pyramid 网络应用程序,其中所有字符串列都是 UTF-8 编码的。当我拉取数据显示时,我必须使用 .decode("UTF-8") 才能显示,否则我会得到 ASCII 无法解码的自然错误。

我有两个问题:

  1. 有没有其他方法可以避免每次都需要.decode("UTF-8")

  2. 如果我想将某些内容推送到数据库中,并且我有一个字符串 s = u'str',当它被插入时我需要对它做任何事情吗到 UTF-8 列?

非常感谢。

For people who might find this message through a google search: If you encounter an error, sort of:

UnicodeDecodeError: 'ascii' codec can't decode byte in

请使用.encode(..)

最佳答案

如果您的 SQLAlchemy 列属于 Unicode输入而不是 String ,SQLAlchemy 将为您进行字符编码/解码(在您的情况下为 UTF-8)。

请注意 String列类型有一个 convert_unicode 参数,可以将其设置为 True,但这应该只用于数据库后端不支持 native Unicode 的极少数情况。

正如@MartijnPieters 在他的评论中提到的,您应该知道 MySQL Unicode SQLAlchemy 文档中的部分。也就是说,如果您没有在与数据库的连接中明确设置字符编码:

# set client encoding to utf8; all strings come back as unicode
create_engine('mysql+mysqldb:///mydb?charset=utf8')

(以下内容大部分引用自SQLAlchemy文档)

[...] 许多 MySQL 服务器安装默认为客户端连接使用 latin1 编码,这具有将所有数据转换为 latin1 的效果,即使您在表和列上配置了 utf8 或其他字符集。MySQL-Python 接收的字符集参数也具有启用 use_unicode=1 的副作用>。”

“手动配置 use_unicode=0 将导致 MySQL-python 返回编码字符串:”

# set client encoding to utf8; all strings come back as utf8 str
create_engine('mysql+mysqldb:///mydb?charset=utf8&use_unicode=0')

关于Python Unicode、Pyramid、UTF-8 MySQL 表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12859750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com