2014-01-03 3 views
1

Вот простой пример использования pymysql (Python 3):PyMySQL возвращает байт вместо ул

import pymysql 
conn = pymysql.connect(user='admin', passwd='...', host='host', use_unicode=True) 
c = conn.cursor() 
c.execute("SELECT category FROM product LIMIT 0,1") 
print (type(c.fetchone()[0])) 

возвращает

< класса 'БАЙТ' >

тип поля varchar, и я думал, что если я укажу use_unicode = True it shoud значение поля возврата как str вместо байт. Да, я знаю, что я могу преобразовать байты в str, но я не хочу.

Можно ли сразу получить строку? Что я делаю неправильно?

ответ

1

Проблема была в сортировке поля. Поскольку он был установлен в utf8_bin pymysql считал его binary, несмотря на то, что он был varchar. Изменение сортировки на utf8_general_ci решило проблему.

+0

Откуда вы это изменили? В связи с pymysql? – postelrich

+1

Нет, я изменил сортировку столбца таблицы. – Mike

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