SQLAlchemy ORM 查询编码
Posted
技术标签:
【中文标题】SQLAlchemy ORM 查询编码【英文标题】:SQLAlchemy ORM Query encoding 【发布时间】:2014-12-04 02:15:44 【问题描述】:伙计们,
您能否就以下问题提出建议。 我正在尝试以本机格式显示值 - 西里尔文。
以下是我的查询
db.session.query(items.item_name).join(item_ship, item_ship.item_id == items.id).join(house_shipment, house_shipment.id == item_ship.shipment_id).first();
结果:(u'\u041c\u0443\u0436\u0441\u043a\u0430\u044f \u043e\u0431\u0443\u0432\u044c',)
表格项目的默认排序规则设置为utf8_general_ci
,我的连接字符串如下。
mysql://root:Abc123@localhost/test?charset=utf8
请帮忙。
谢谢,
【问题讨论】:
在我看来像西里尔字母:map(unicodedata.name, u'\u041c\u0443\u0436\u0441\u043a\u0430\u044f') Out[4]: ['CYRILLIC CAPITAL LETTER EM', 'CYRILLIC SMALL LETTER U', 'CYRILLIC SMALL LETTER ZHE', 'CYRILLIC SMALL LETTER ES', 'CYRILLIC SMALL LETTER KA', 'CYRILLIC SMALL LETTER A', 'CYRILLIC SMALL LETTER YA']
【参考方案1】:
你的编码是正确的:
>>> print(u'\u041c\u0443\u0436\u0441\u043a\u0430\u044f \u043e\u0431\u0443\u0432\u044c')
Мужская обувь
>>> print(repr(u'Мужская обувь'))
u'\u041c\u0443\u0436\u0441\u043a\u0430\u044f \u043e\u0431\u0443\u0432\u044c'
您得到的主要问题不是字符串,而是包含第一个结果行的对象。所以你得到repr
的对象。
将查询末尾的.first()
更改为.scalar()
。 Scalar 将返回第一行的第一列。
作为另一种变体,您可以访问行对象并从中提取字符串。
【讨论】:
谢谢。我想通了。下次我会尝试更具描述性。以上是关于SQLAlchemy ORM 查询编码的主要内容,如果未能解决你的问题,请参考以下文章
tornado 07 数据库—ORM—SQLAlchemy—查询