我有执行这样与SQLAlchemy的发动机的SQL查询:
result = engine.execute('SELECT utf_8_field FROM table')
该数据库是MySQL和列类型是TEXT用UTF-8编码。 该类型返回utf_8_field的是“海峡”,即使我在创建引擎时所设置的选项convert_unicode =真。 现在会发生什么,如果我在我的字符串有一个像“E”字符(这是不是在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的表对象还没有,这就是为什么我使用的是执行命令。
任何的想法?