我正在尝试在python cgi-bin中实现MYSQL。我不知道为什么会这样。 我在Windows 8和python版本2.7.8上执行此操作。我也参观了不同但未能解决的问题。
文件名: sqlcgi.py
我的代码:
#!C:\Python27\python
import cgi
import MySQLdb
db = MySQLdb.connect(host="127.0.0.1",port=3306, user="root", passwd="",db="project")
cursor = db.cursor() #for 1st query
cursor2 = db.cursor()##for 2nd query
# execute SQL select statement
#sql = "SELECT stid,firstname FROM student WERE stid IN(SELECT stid FROM stobt WHERE stid=%s" % (0) #query number 1
#query number 1
sql2 = "SELECT stid FROM student WHERE firstname = '%s'" % ('User')
# Execute the SQL command
cursor2.execute(sql2)
# Fetch all the rows in a list of lists.
result2 = cursor2.fetchall()
print result2
row2 = result2[0]
#print 'r1',row[1]
#print 'r2',row2[0]
sql = "SELECT * FROM stobt WHERE stid = '%d'" % (row2)
cursor.execute(sql)
results = cursor.fetchall()
row = results[1]
tc = 56
for row in results:
if row2[0] == row[1]:
idd = row[0]
stid = row[1]
obtained = row[2]
subject = row[3]
# Now print fetched result
print "id=%s,stid=%s,obtained=%f,subject=%s" % \
(idd, stid, obtained, subject )
if obtained <= 50:
if tc >= 50:
print tc
print """Content-type: text/html\n
<html><head><title>MySQL and Python on the Web</title></head>
<body bgcolor=#FFCCFF><h1>Message Board Report</h1>
This is a message board report demo.<hr>
<b>This is what has been going on ... </b><br>
"""
print idd
print """
<hr>
<form method=POST>Please enter your comment: <input name=info><br>
<input type=submit>
</form>
<hr>
Demonstration from Well House Consultants.<br>
<a href=http://www.wellho.net/>Website</a>
</body></html>
"""
# disconnect from server
db.close()
错误:
Error message:
End of script output before headers: sqlcgi.py
我不知道我做错了还是正确的,因为当我删除所有sql部分和cgi打印但是sql没有。
答案 0 :(得分:0)
在第一个输出语句之前某处出现错误,并且您的脚本正在中止。
如果启用追溯报告,将有助于找到它。将其添加到脚本的顶部:
import cgitb
cgitb.enable()
在浏览器中加载页面时,您应该看到错误是什么。
您的脚本还存在其他问题。在CGI脚本中,标准输出作为HTTP回复发送。重要的是,必须首先在实际内容之前写入HTTP标头。
在这种情况下,您有一些调试打印语句,例如第22行,在打印HTTP标头之前生成输出。