sqlalchemy mysql配置中怎么设置utf8_为什么SQLAlchemy create_engine与charset = utf8返回python类型而不是类型?...

在Python2.7中使用sqlAlchemy 0.7连接MySQL时,设置charset=utf8理论上应使所有字符串以unicode返回。然而,实际查询后发现文本字段仍以'str'类型存在。这可能是因为在映射类查询过程中发生了类型转换。为确保正确处理字符串,可以在使用前手动解码。问题在于为何自动的unicode转换未生效。
摘要由CSDN通过智能技术生成

使用Python 2.7和sqlAlchemy 0.7,我使用以下命令连接到MysqL DB:

engine = create_engine('MysqL://username:password@host/dbname?charset=utf8',echo=False)

根据sqlAlchemy文档,设置charset = utf8会自动隐含use_unicode = 1,因此所有字符串都应该以unicode形式返回. http://docs.sqlalchemy.org/en/rel_0_7/dialects/mysql.html具体给出了例子

#set client encoding to utf8; all strings come back as unicode

create_engine(‘MysqL+MysqLdb:///mydb?charset=utf8’)

那么,为什么当我在映射类中查询文本字段时,该字段最终是否为“str”类型?

Base = declarative_base(engine)

class RegionTranslation(Base):

''''''

__tablename__ = 'RegionTranslation'

__table_args__ = {'autoload':True}

def __init__(self,region_id,lang_id,name):

self.region_id = region_id

self.lang_id = lang_id

self.name = name

rtrans = session.query(RegionTranslation).filter_by(region_id = 1,lang_id = 6).one()

print (type(rtrans.name))

如果我只是接受这个并在使用之前对字符串进行解码,那么事情就好了.但我不明白为什么上面的代码没有返回类型’unicode’.有人可以请解释一下吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值