Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 27, 2010 08:54:28

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

Не выводится текст из MySQL

Здравствуйте! Возникала проблема с выводом текста из таблицы.
Делаю так:

import cgi
import MySQLdb

zp=cgi.FieldStorage()
p=zp.has_key('pages')
pag=zp["pages"].value
pags=int(pag)

news='{NEWS}'
if pags == 1:
cursor.execute("""SELECT * FROM News WHERE id=1""")
nw=cursor.fetchall()
xen=xen.replace(news, nw[1])
print xen
и выводится пустая страница, а в логе пишет:
File “Z:/home/localhost/cgi-bin/index.py”, line 61, in <module>\r
xen=xen.replace(news, nw)\r
IndexError: tuple index out of range\r
Подскажите в чём может быть проблема.
Из других таблиц выводится всё нормально.
Вот полный исходник:
#!/usr/bin/python
import cgi
import MySQLdb

zp=cgi.FieldStorage()
p=zp.has_key('pages')
pag=zp["pages"].value
pags=int(pag)

MyDB=MySQLdb.connect(host='localhost', user='root', passwd='', db='sevreid')
cursor=MyDB.cursor()
cursor.execute("""SELECT * FROM Pages_Title WHERE id="""+pag)
tl=cursor.fetchall()
cursor.execute("""SELECT * FROM Top_Menu ORDER BY pos ASC""")
out=''
for link in cursor.fetchall():
out=out+'<td width="'+link[3]+'">'
out=out+'<a href="'+link[1]+'">'+link[2]+'</a>'+'</td>'

cursor.execute("""SELECT * FROM Right_Menu ORDER BY pos ASC""")
r_out=''
for rlink in cursor.fetchall():
r_out=r_out+'&#xA0;&#xA0;&#xA0;&#xA0;<img src="/images/pt.png" /><a href="'+rlink[2]+'" id="r_menu">&#xA0;'
r_out=r_out+rlink[1]+'</a><br />'
title='{TITLE}'
topMenu='{TOP_MENU}'
rightMenu='{RIGHT_MENU}'
cont='{CONTENT}'
about='(ABOUT}'
news='{NEWS}'

print 'Content-Type: text/html\n'
if pags == 1:
sh=open(r'themplates/sh2')
if pags > 1:
sh=open(r'themplates/sh1')
res=sh.read()
xen=res
xen=xen.replace(rightMenu, r_out)
xen=xen.replace(topMenu, out)
#xen=xen.replace(title, tl[1].decode('utf8'))

if pags == 1:
#cursor.execute("""SELECT * FROM about WHERE id=1""")
#ab=cursor.fetchall()
cursor.execute("""SELECT * FROM News WHERE id=1""")
nw=cursor.fetchall()
cursor.execute("""SELECT * FROM IndexPage ORDER BY id ASC""")
ct=''
for row in cursor.fetchall():
ct=ct+'<td></td><td id="zgl">'+row[1]+'</td><td></td>'
ct=ct+'<td id="zgl">'+row[2]+'</td><td></td></tr><tr>'
ct=ct+'<td width="25%"></td><td>'+row[3]+'</td>'
ct=ct+'<td width="8%"></td><td>'+row[4]+'</td>'
ct=ct+'<td width="25%"></td></tr><tr>'
ct=ct+'<td></td><td>'+row[5]+'</td><td></td><td>'+row[6]+'</td>'
ct=ct+'<td></td></tr><tr><td></td><td></td><td></td>'
ct=ct+'<td></td><td height="30px"></td></tr>'
xen=xen.replace(cont, ct)
#xen=xen.replace(about, ab[0])
xen=xen.replace(news, nw[1])
print xen



Офлайн

#2 Дек. 27, 2010 09:20:43

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Не выводится текст из MySQL

Fe_DoS, глядя на код, осмелюсь предположить, что вы до этого много программировали на PHP? ;)

xen=xen.replace(news, nw[1])\r
IndexError: tuple index out of range\r
В этих двух строчках все сказано. Можете перефразировать и в вольной форме на русском написать, что это значит? И где искать проблему?



Офлайн

#3 Дек. 27, 2010 09:30:26

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

Не выводится текст из MySQL

maxwell, Вы правы, я до этого программировал на PHP.
Я перевёл и сделал вот так:

import cgi
import MySQLdb

zp=cgi.FieldStorage()
p=zp.has_key('pages')
pag=zp["pages"].value
pags=int(pag)

news='{NEWS}'
if pags == 1:
cursor.execute("""SELECT * FROM News WHERE id=1""")
nw=cursor.fetchall()
xen=xen.replace(news, nw[0][1])
print xen
Теперь всё в порядке, но почему он из других таблиц текст без проблем выводит?
for rlink in cursor.fetchall():
r_out=r_out+'&#xA0;&#xA0;&#xA0;&#xA0;<img src="/images/pt.png" /><a href="'+rlink[2]+'" id="r_menu">&#xA0;'
r_out=r_out+rlink[1]+'</a><br />'
По идее тут он тоже должен ругаться на индекс кортежа, или я чего-то не так понимаю.



Офлайн

#4 Дек. 27, 2010 15:17:43

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Не выводится текст из MySQL

Да и вообще можно посоветовать, не использовать python через cgi. Если хостинг позволяет, лучше заюзать mod_wsqi. И использовать какой нибудь фреймворк, начиная от простого web.py заканчивая django. Скорость разработки увеличится на порядок, по сравнению с “голым” php или python.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version