Найти - Пользователи
Полная версия: Mysql и уникоды
Начало » Python для новичков » Mysql и уникоды
1
max79
Подскажите как работать с данными в уникодах в mysql. Что я делаю не так?

>>> import MySQLdb
>>> db=MySQLdb.connect(user=“***”, passwd=“*****”, db=“test”, use_unicode=True)
>>> a= u'test тест'
>>> db.escape_string(a)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 5-8: ordinal not in range(128)
Спасибо
Felixx
Не, я прогнал. отставить пост!)
Piton23
База в какой кодировке?
Хотя какая разница. Посмотрев в нете, функцию экранирования больше используют к пакету а не к коннекту. Т.е. MySQLdb.escape_string(…). Ну раз он не викидывает исключения NoAttribute то хз. Модуля нет под руками чтоб протестить. Ждите что кто нить толковое подскажет )
max79
Piton23
База в какой кодировке?
Хотя какая разница. Посмотрев в нете, функцию экранирования больше используют к пакету а не к коннекту. Т.е. MySQLdb.escape_string(…). Ну раз он не викидывает исключения NoAttribute то хз. Модуля нет под руками чтоб протестить. Ждите что кто нить толковое подскажет )

база конечно в utf8_general_ci и все поля и таблицы в utf8_general_ci
чувствую что я что-то не то делаю. ведь очевидно что если не эскейпить то где нить да проскочит кавычка или двойной минус. и все как-то с этим борятся?

вопрос как?
Piton23
Ты попробуй пока инсертнуть в базу значения где будешь обрабатывать через MySQLdb.escape_string(a), а не через db.escape_string(a), пробуй экспериментируй. А если будет выскакивать UnicodeEncodeError то приведи здесь пример втавки значения в базу, дальше будем смотреть.

Да кстати перед escape пробуй также encode('utf-8'), т.е.
MySQLdb.escape_string(a.encode('utf-8'))

Либо жди когда более опытный даст тебе совет :)


Андрей Светлов

escape_string желает работать с байтами. a имеет тип unicode. При преобразовании str(a) вызывается кодек по умолчанию, имя которому ascii. До собственно MySQL дело не доходит.

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB