2014-12-04 3 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(); 

Результат: (и '\ 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, и '\ u041c \ u0443 \ u0436 \ u0441 \ u043a \ u0430 \ u044f') Out [4]: ​​ [ 'CYRILLIC CAPITAL ПИСЬМО EM', 'CYRILLIC МАЛОГО Буква U', 'CYRILLIC МАЛОГО ПИСЬМО ZHE', 'CYRILLIC МАЛОГО ПИСЬМО Е.С.', 'CYRILLIC МАЛОГО ПИСЬМО К.А.', 'CYRILLIC МАЛОЙ буква А', 'CYRILLIC МАЛОГО ПИСЬМО Ю.А.'] ' – SingleNegationElimination

ответ

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

Смежные вопросы