Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2012 08:53:29

max79
Зарегистрирован: 2012-04-04
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Mysql и уникоды

Подскажите как работать с данными в уникодах в 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)
Спасибо

Офлайн

#2 Апрель 4, 2012 22:57:37

Felixx
Зарегистрирован: 2012-04-04
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Mysql и уникоды

Не, я прогнал. отставить пост!)

Отредактировано Felixx (Апрель 4, 2012 23:14:51)

Офлайн

#3 Апрель 5, 2012 07:55:19

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Mysql и уникоды

База в какой кодировке?
Хотя какая разница. Посмотрев в нете, функцию экранирования больше используют к пакету а не к коннекту. Т.е. MySQLdb.escape_string(…). Ну раз он не викидывает исключения NoAttribute то хз. Модуля нет под руками чтоб протестить. Ждите что кто нить толковое подскажет )

Отредактировано Piton23 (Апрель 5, 2012 08:10:47)

Офлайн

#4 Апрель 5, 2012 12:21:01

max79
Зарегистрирован: 2012-04-04
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Mysql и уникоды

Piton23
База в какой кодировке?
Хотя какая разница. Посмотрев в нете, функцию экранирования больше используют к пакету а не к коннекту. Т.е. MySQLdb.escape_string(…). Ну раз он не викидывает исключения NoAttribute то хз. Модуля нет под руками чтоб протестить. Ждите что кто нить толковое подскажет )

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

вопрос как?

Офлайн

#5 Апрель 5, 2012 14:33:31

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Mysql и уникоды

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

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

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


Офлайн

#6 Апрель 5, 2012 16:35:33

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Mysql и уникоды

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version