Уведомления

Группа в Telegram: @pythonsu

#1 Июль 15, 2006 15:30:21

yo0hoo
От:
Зарегистрирован: 2006-06-17
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

Пишу нечто вроде:

#!C:/python24/python
print “Content-Type: text/html\n\n”
import MySQLdb
db = MySQLdb.connect(db='test',user='root',passwd='')
c = db.cursor()
c.execute(“SELECT name FROM test;”)
results = c.fetchone()
db.close()
print “”“
<HTML>
<HEAD>
<TITLE>Test DB</TITLE>
</HEAD>
<BODY><PRE>
”“”
results
print results
print “<BR>”
print “”“
</PRE>
</BODY>
</HTML>
”“”

И выводится следующее:
('yo0hoo',)
Можно ли как-то сделать чтобы выводилась не эта “барматуха”, а просто yo0hoo без запятых и скобок?



Офлайн

#2 Июль 16, 2006 11:57:23

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2250
Репутация: +  40  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

>>> txt = ('yo0hoo',)
>>> txt
('yo0hoo',)
>>> txt[0]
'yo0hoo'
=\

Офлайн

#3 Июль 17, 2006 17:57:15

yo0hoo
От:
Зарегистрирован: 2006-06-17
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

Спасибо. Но сразу возникает другой вопрос по этой же теме. Если попытаться внести данные в БД кодом:
c.execute(“INSERT INTO test VALUES('Проверка кодировки');”)
то выдается сообщение об ошибки вроде этого:
sys:1: DeprecationWarning: Non-ASCII character ‘\\xcf’ in file D:/Apache Group/Apache2/cgi-bin/db.cgi on line 5, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details\r
Traceback (most recent call last):\r
File “D:/Apache Group/Apache2/cgi-bin/db.cgi”, line 5, in ?\r
c.execute(“INSERT INTO test VALUES('\xcf\xf0\xee\xe2\xe5\xf0\xea\xe0 \xea\xee\xe4\xe8\xf0\xee\xe2\xea\xe8');”)\r
File “C:\\Python24\\Lib\\site-packages\\MySQLdb\\cursors.py”, line 146, in execute\r
query = query.encode(charset)\r
UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xcf in position 30: ordinal not in range(128)\r
Как мне лучше поступить?



Офлайн

#4 Июль 18, 2006 09:17:53

dev65
От:
Зарегистрирован: 2006-06-14
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

Как показывает мой опыт, лучше работать непосредственно с Юникодом. Больше гемора при разработке, меньше при использованиии. Юникод, он и в Африке Юникод :)



Офлайн

#5 Июль 18, 2006 10:01:29

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2250
Репутация: +  40  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

>>UnicodeDecodeError
таки лучше сразу юникод юзать и не забывай про кодировку самого файла

Офлайн

#6 Июль 18, 2006 12:19:35

yo0hoo
От:
Зарегистрирован: 2006-06-17
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

Сама база в кодировке cp1251. Я честно говоря не совсем пойму что мне надо сделать. Мне надо поменять кодировку самой базы или что-то другое?



Офлайн

#7 Июль 20, 2006 12:20:22

yo0hoo
От:
Зарегистрирован: 2006-06-17
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

Смотрю возможные кодировки: SHOW CHARACTER SET; unicode и в помине нет.



Офлайн

#8 Июль 20, 2006 12:50:02

yo0hoo
От:
Зарегистрирован: 2006-06-17
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

Если сдеать таблицу utf8, то русские буквы отображаются нормально, кроме первой, вместо нее стоит ‘?’ . Что делать?



Отредактировано (Июль 20, 2006 13:00:25)

Офлайн

#9 Июль 20, 2006 14:42:41

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2250
Репутация: +  40  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

скажу честно: не юзаю я MySQL, но попробуй так MySQLdb.connect( …, use_unicode=0)

Офлайн

#10 Июль 20, 2006 19:28:13

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по MySQLdb

В начале py-файла добавь

# -*- coding: cp1251 -*-
Это для начала. А там видно будет…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version