SQLAlchemy和Python - 从数据库检索非ASCII字符

3

我的问题: 为什么我无法将SQLAlchemy数据库中的非ascii字符检索到Python中?

更详细的解释: 我在我的SQLAlchemy数据库中有一个带有非ascii字符的条目(例如Umlaut)。 当我尝试使用以下方法检索此条目时:

q=self.session.query(Table_Name).filter(Table_Name.id=='some id')
q.all()

我收到以下错误信息:
UnicodeEncodeError: 'ascii' codec can't encode characters in position

在向数据库插入条目之前,我通过将条目解码为UTF-8来解决了这个问题。

然而,我想知道 - 为什么会出现这个错误?有没有一种方法可以获取已经编码为Unicode的条目,例如而不是以字节字符\ ASCII形式进入Python?


你的数据库是UTF-8编码的吗?而且你的Python代码中也有 # -- coding: utf-8 -- 吗? - Amin Alaee
1个回答

1
根据文档,您应该在连接字符串中指定编码:
e = create_engine("mysql+pymysql://scott:tiger@localhost/test?charset=utf8")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接