Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 24, 2010 08:55:27

Fe_DoS
От:
Зарегистрирован: 2010-11-18
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод данных из таблицы

Здравствуйте! Возникла проблема, есть код:

import cgi
import MySQLdb

MyDB=MySQLdb.connect(host='localhost', user='root', passwd='', db='serv')
cursor=MyDB.cursor()
cursor.execute("""SELECT * FROM IndexPage WHERE id=2""")
zg1=cursor.fetchall()
zp=cgi.FieldStorage()
p=zp.has_key('pages')
lixt='lrof'
title='{TITLE}'
Block1='{BLOCK_1}'

if p==1:
print 'Content-Type: text/html\n'
sh=open(r'themplates/sh2')
res=sh.read()
xen=res.replace(lixt,'refr')
xen=xen.replace(title,'Название страницы')
xen=xen.replace(Block1,zg1)
print xen
Отображается пустая страница и в логе ошибка:
xen=xen.replace(Block1,zg1)\r
TypeError: expected a character buffer object\r
А если сделать так:
import cgi
import MySQLdb

MyDB=MySQLdb.connect(host='localhost', user='root', passwd='', db='serv')
cursor=MyDB.cursor()
cursor.execute("""SELECT * FROM IndexPage WHERE id=2""")
zg1=cursor.fetchall()
zp=cgi.FieldStorage()
p=zp.has_key('pages')
lixt='lrof'
title='{TITLE}'
Block1='{BLOCK_1}'

if p==1:
print 'Content-Type: text/html\n'
sh=open(r'themplates/sh2')
res=sh.read()
xen=res.replace(lixt,'refr')
xen=xen.replace(title,'Название страницы')
xen=xen.replace(Block1,'Текст первого блока')
print xen
print zg1
то тогда отображается страница полностью и в низу где
должно выводиться print zg1 выводится строка
((2L, ‘\xc7\xe0\xe3\xee\xeb\xee\xe2\xee\xea \xe2\xf2\xee\xf0\xee\xe3\xee \xe1\xeb\xee\xea\xe0’, ‘\xf2\xe5\xea\xf1\xf2 \xe2\xf2\xee\xf0\xee\xe3\xee \xe1\xeb\xee\xea\xe0’),)
Подскажите в чём у меня ошибка.
Подскажите ещё пожалуйста как выбрать данные из конкретной ячейки таблицы базы данных и что бы данные отображались корректно, а не строка с абракадаброй вроде той что я выше написал.
Заранее благодарю.



Офлайн

#2 Ноя. 24, 2010 12:16:40

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Вывод данных из таблицы

fetchall - возвращает список результатов, который тоже является списком
т.е. там не строка


    a,b,c = zg1[0]
xen=res.replace(lixt,a)
xen=xen.replace(title,b)
xen=xen.replace(Block1,c)
про конкретную ячейку
должно быть примерно так

cursor.execute("""SELECT title FROM table WHERE id=2;""")
(title,) = cursor.fetchone()



Отредактировано (Ноя. 24, 2010 12:22:23)

Офлайн

#3 Ноя. 24, 2010 13:07:57

Fe_DoS
От:
Зарегистрирован: 2010-11-18
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод данных из таблицы

zheromo спасибо за помощь, разобрался теперь всё в порядке.



Отредактировано (Ноя. 24, 2010 13:08:34)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version