gpt4 book ai didi

python - UTF-8 列的 SQLAlchemy 结果是 'str' 类型,为什么?

转载 作者:IT老高 更新时间:2023-10-28 20:44:30 26 4
gpt4 key购买 nike

我有一个使用 SQLAlchemy 引擎执行的 SQL 查询:

result = engine.execute('SELECT utf_8_field FROM table')

数据库是 MySQL,列类型是 UTF-8 编码的 TEXT。返回的 utf_8_field 的类型是“str”,即使我在创建引擎时设置了选项 convert_unicode=True。现在发生的情况是,如果我的字符串中有一个像“é”这样的字符(不是 7 位 ASCII,而是在扩展的 ASCII 集中),我在尝试执行此操作时会收到 UnicodeDecodeError:

utf_8_field.encode("utf-8")

确切的错误是:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 1: ordinal not in range(128)

在查看这个时,我发现 str.encode 不支持扩展的 ASCII 字符集!我觉得这很奇怪,但这是另一个问题。

我不明白为什么 SQLAlchemy 没有给我一个 unicode 字符串。我以前使用 DB-API,效果很好。我的表还没有 SQLAlchemy 表对象,这就是我使用执行命令的原因。

有什么想法吗?

最佳答案

如果你想自动转换数据,你应该specify the charset创建引擎时:

create_engine('mysql+mysqldb:///mydb?charset=utf8')

单独设置 use_unicode 不会告诉 sqlalchemy 使用哪个字符集。

关于python - UTF-8 列的 SQLAlchemy 结果是 'str' 类型,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10819192/

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