Fae*_*nor 20 python mysql string encoding sqlalchemy
我有一个SQL查询,我使用SQLAlchemy引擎执行此操作:
result = engine.execute('SELECT utf_8_field FROM table')
Run Code Online (Sandbox Code Playgroud)
数据库是MySQL,列类型是TEXT,UTF-8编码.返回的utf_8_field的类型是"str",即使我在创建引擎时设置选项convert_unicode = True.现在发生的事情是,如果我的字符串中有'é'字符(不是7位ASCII,但是在扩展的ASCII集中),我在尝试执行此操作时会得到UnicodeDecodeError:
utf_8_field.encode("utf-8")
Run Code Online (Sandbox Code Playgroud)
确切的错误是:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 1: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
在研究这个时,我发现str.encode不支持扩展的ASCII字符集!我觉得这很奇怪,但这是另一个问题.
我不明白的是为什么SQLAlchemy没有给我一个unicode字符串.我以前使用的是DB-API,而且运行正常.我的表也没有SQLAlchemy表对象,这就是我使用execute命令的原因.
任何的想法?
mat*_*ata 41
如果要自动转换数据,则应在创建引擎时指定charset:
create_engine('mysql+mysqldb:///mydb?charset=utf8')
Run Code Online (Sandbox Code Playgroud)
use_unicode单独设置不会告诉sqlalchemy使用哪个charset.
| 归档时间: |
|
| 查看次数: |
18675 次 |
| 最近记录: |