我有一个使用 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 表对象,这就是我使用执行命令的原因。
任何的想法?