Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mysqldb encoding 
V
    Опции темы
niro
Дата 16.12.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Решил освавивать mysql(mysqldb). Изначально использую кодировку utf-8 . При попытке что либо отправить в данной кодировке. Вот пример
Код

#-*-coding:utf-8 -*-
import MySQLdb
con = MySQLdb.connect (host = "localhost",db = "test",charset='utf8')
cur = con.cursor()
cur.execute("SET NAMES 'utf8'")
print con.character_set_name()
cur.execute('create table base (val char(50)) charset=utf8;')
cur.execute("insert into base values(u'текст')")
cur.execute('select * from base')
result = cur.fetchall()
print result
cur.close()
con.commit()
con.close()

Из этого вылазит ошибка 
Код

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    cur.execute("insert into base values(u'я┌п╣п╨я│я┌')")
  File "/usr/local/lib/python2.5/site-packages/MySQLdb/cursors.py", line 146, in execute
    query = query.encode(charset)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 26: ordinal not in range(128)

Так же 
Код

print con.character_set_name() 

Выводит 
Код

latin1

Собственно ничего не помогает . Slackware 10.2 Mysql 4.1.14 Python 2.5

Это сообщение отредактировал(а) niro - 16.12.2006, 20:15
PM MAIL   Вверх
Daevaorn
Дата 16.12.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Цитата(niro @  16.12.2006,  16:42 Найти цитируемый пост)
cur.execute("SET NAMES 'utf8'")

Попробуй убрать ковычки  у 'utf8'
PM MAIL WWW   Вверх
niro
Дата 16.12.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



нет , не помогло , может быть все дело в конфигах

Это сообщение отредактировал(а) niro - 16.12.2006, 20:16
PM MAIL   Вверх
albertn
Дата 18.12.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Попробуй так:
Код

cur.execute("insert into base values('текст')".decode('utf8'))

PM WWW ICQ   Вверх
slav0nic
Дата 18.12.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.5.2006

Репутация: 4
Всего: 5



олько что в асе задали аналогичный вопрос, надо делать как уже указал albertn )
--------------------
                                 python.com.ua 
PM MAIL WWW Jabber   Вверх
niro
Дата 19.12.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Странно , но не работает , может кто реальный пример предложит , может я неправильно создаю базу  smile 
PM MAIL   Вверх
albertn
Дата 19.12.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(niro @ 19.12.2006,  15:00)
Странно , но не работает , может кто реальный пример предложит , может я неправильно создаю базу  smile

А что пишет то?
PM WWW ICQ   Вверх
niro
Дата 19.12.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Код

#-*-coding:utf8 -*-
import MySQLdb
con = MySQLdb.connect (host = "localhost",user = "root",db = "test",charset='utf8',use_unicode=True)
cur = con.cursor()
cur.execute("SET NAMES 'utf8'")
print con.character_set_name()
#cur.execute("create table base (val char(50))")
cur.execute("insert into base values 'аыв'".decode('utf8'))
#cur.execute('select * from base')
#result = cur.fetchall()
#print result
cur.close()
con.commit()
con.close()

Error:
Код

latin1
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    cur.execute("insert into base values 'п╟я▀п╡'".decode('utf8'))
  File "/usr/local/lib/python2.5/site-packages/MySQLdb/cursors.py", line 146, in execute
    query = query.encode(charset)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 25-27: ordinal not in range(256)



PM MAIL   Вверх
pythonwin
Дата 20.12.2006, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



niro, посмотри в http://forum.vingrad.ru/topic-119236.html  smile
PM WWW GTalk Jabber   Вверх
niro
Дата 21.12.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
niro
Дата 21.12.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Разобрался , вся бага в том что метод передачи latin1 , вот что надо было дописать: 
Код

cur.execute(unicode("insert into base values('тест')",'latin1'))

Спасибо всем за участие ! 
PM MAIL   Вверх
albertn
Дата 21.12.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Оригинально и, по-моему, совсем не верно, хоть и работает  smile
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.