Оператор печати не работает в PSP (страницы сервера Python)

Ниже приведен код для страниц сервера Python (PSP); используя mysqldb, я пытаюсь извлечь записи из таблицы "addr", а затем распечатать их на HTML-странице.

Но по какой-то причине оператор print внутри цикла for (содержащий строки таблицы) и вне цикла for (содержащий оператор Hello) не работает, из-за чего после выполнения кода, наконец, отображается только оператор "строки напечатаны" и ничего больше.

<% import MySQLdb 

conn = MySQLdb.Connect(host='localhost',user='user',passwd='password',db='db1')
cur = conn.cursor()
sql= "SELECT * from addr;"
try:
  cur.execute(sql)
  data = cur.fetchall()
  for row in data:
    print row[1]
  print("Hello")
  cur.close()
  conn.close()
%>
<br />
<html>
<h1> Rows Printed</h1>
</body>
</html>
<%
except MySQLdb.IntegrityError,message:
  errorcode = message[0]
%>
<html>
<body><h1> Technical issue</h1>
</body>
</html>

Оператор print не отображает результаты даже без блока try catch, но при запуске в виде скрипта Python работает нормально и предоставляет нужные записи, хранящиеся в таблице.

1 ответ

Решение

Я не могу понять, почему вы хотите использовать Python Server Pages, но, поскольку вы это делаете, вы явно не можете использовать print, Вы должны фактически вывести результаты на страницу в синтаксисе PSP. Что-то вроде:

for row in data: %>
<br><%= row[1] =%>
<%
cur.close()

и т.п.

Другие вопросы по тегам