Форум сайта python.su
Пишу нечто вроде:
#!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 без запятых и скобок?
Офлайн
>>> txt = ('yo0hoo',)
>>> txt
('yo0hoo',)
>>> txt[0]
'yo0hoo'
Офлайн
Спасибо. Но сразу возникает другой вопрос по этой же теме. Если попытаться внести данные в БД кодом:
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
Как мне лучше поступить?
Офлайн
Как показывает мой опыт, лучше работать непосредственно с Юникодом. Больше гемора при разработке, меньше при использованиии. Юникод, он и в Африке Юникод :)
Офлайн
>>UnicodeDecodeError
таки лучше сразу юникод юзать и не забывай про кодировку самого файла
Офлайн
Сама база в кодировке cp1251. Я честно говоря не совсем пойму что мне надо сделать. Мне надо поменять кодировку самой базы или что-то другое?
Офлайн
Смотрю возможные кодировки: SHOW CHARACTER SET; unicode и в помине нет.
Офлайн
Если сдеать таблицу utf8, то русские буквы отображаются нормально, кроме первой, вместо нее стоит ‘?’ . Что делать?
Отредактировано (Июль 20, 2006 13:00:25)
Офлайн
скажу честно: не юзаю я MySQL, но попробуй так MySQLdb.connect( …, use_unicode=0)
Офлайн
В начале py-файла добавь
# -*- coding: cp1251 -*-
Офлайн