pyMySQL установить набор символов соединения

Я разрабатываю довольно простое веб-приложение, используя Flask и MySQL.

Я борюсь с юникодом. Пользователи иногда вставляют данные, которые они скопировали из Word, и они перекрываются старыми умными кавычками u'\u201c'.

Небольшое исследование показывает, что мое соединение с MySQL использует кодировку Latin1 (кажется, по умолчанию).

Как я могу указать, чтобы он использовал юникод для своего подключения?

Я использую pyMySQL, который претендует на замену MySQLdb. MySQLdb определяет функцию set_character_set(self, charset) для объектов connection, а pyMySQL — нет (при попытке я получаю сообщение об ошибке).


person MalphasWats    schedule 18.06.2012    source источник
comment
Вы можете попробовать необработанный запрос для каждого соединения, которое у вас есть, с указанием SET NAMES UTF8   -  person Sjaak Trekhaak    schedule 18.06.2012


Ответы (1)


Я решил это, покопавшись в исходниках pyMySQL (я пытался, но не смог найти нужное место!).

Вы можете указать его при создании соединения:

conn = pymysql.connect(host='localhost',
                       user='username',
                       passwd='password',
                       db='database',
                       charset='utf8')

Решил мою проблему.

person MalphasWats    schedule 18.06.2012
comment
Я пытался использовать pymysql с sqlalchemy, поэтому исправление для меня состояло в том, чтобы изменить URL-адрес на mysql+pymysql://user_name@host_name/database_name?charset=utf8mb4 ; этот ответ очень помог! - person Devin Howard; 23.10.2015