2014-12-04 56 views
0

民间,SQLAlchemy ORM查询编码

您能否请告知下列事项。 我想显示本地格式的值 - 西里尔文。

下面是我的查询

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:[email protected]/test?charset=utf8 

请帮忙。

感谢,

+0

看起来像西里尔对我说:'地图(unicodedata.name,U '\ u041c \ u0443 \ u0436 \ u0441 \ u043a \ u0430 \ u044f') 出[4]: [ 'CYRILLIC大写字母EM', 'CYRILLIC小写字母U', 'CYRILLIC小写字母ZHE', 'CYRILLIC小写字母ES', 'CYRILLIC小写字母KA', 'CYRILLIC小写字母A', 'CYRILLIC小写字母YA'] ' – SingleNegationElimination 2014-12-04 02:59:00

回答

0

你的编码是正确的:

>>> 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将返回第一行的第一列。 作为另一种变体,您可以访问行对象并从中提取字符串。

+0

谢谢。我明白了。下次我会尽量更具描述性。 – user851094 2014-12-08 02:25:25