2014-12-04 57 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