在这种情况下,Python的MySQLdb模块返回的是utf8编码还是unicode?

4 投票
1 回答
6816 浏览
提问于 2025-04-16 17:37

我使用MySQLdb连接到一个数据库,里面的所有内容都是用utf8编码存储的。

如果我执行了

cursor.execute("SET NAMES utf8")

然后通过另一个语句从数据库中获取一些数据。这是否意味着在

cursor.execute("SELECT ...")
cursor.fetchall()

中的字符串会是unicode格式?还是说我需要先通过

mystr.decode("utf8")

将它们转换成unicode格式?

1 个回答

10

来自文档

连接(connect(parameters...))
...

use_unicode

如果设置为True,CHAR、VARCHAR和TEXT类型的字段会以Unicode字符串的形式返回,使用你配置的字符集。最好在服务器配置或客户端配置中设置默认编码(可以通过read_default_file来读取)。如果在连接后更改字符集(MySQL-4.1及以后版本),你需要在connection.charset中输入正确的字符集名称。

如果设置为False,文本类型的字段会以普通字符串的形式返回,但你仍然可以写Unicode字符串。

这个参数必须是关键字参数。

撰写回答