返回Python CGI MySQL脚本的输出
我刚开始学习Python和MySQL,这是我在Stack Overflow上的第一个问题。如果我遗漏了什么明显的东西,先说声抱歉。不过,我真的在问之前努力研究过这个问题。
我正在尝试学习Python、MySQL和CGI脚本的基础知识。为此,我在阅读一些教程,比如http://www.tutorialspoint.com/python/python_cgi_programming.htm和http://www.tutorialspoint.com/python/python_database_access.htm等。
我想通过CURL GET或者Python Requests GET来调用一个测试服务器上的Python CGI脚本。这个Python CGI脚本会对本地的MySQL数据库进行读取操作,然后把结果返回给CURL或者Python Requests。
我创建的Python CGI脚本在远程测试服务器上能完美地将MySQL读取的数据输出到终端。但是,它却无法将这些输出返回给触发CGI脚本的CURL或Python Requests。
这是我拼凑出来的Python CGI脚本:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)
try:
# Execute the SQL command
cursor.execute(sql)
# Fetch all the rows in a list of lists.
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# Now print fetched result
print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
(fname, lname, age, sex, income )
except:
print "Error: unable to fetch data"
# disconnect from server
db.close()
我猜测我需要以某种方式将SQL查询的数据通过某种返回或输出语句传回Python或者请求的进程。但是,我尽力研究这个问题也没有找到解决办法。有人能指点我一下正确的方向吗?非常感谢任何帮助!
Marc :-)
1 个回答
首先,根据你提到的CGI教程,你需要输出你正在使用的内容类型:
print "Content-type: text/plain\r\n\r\n",
如果你没有在这里加上换行符,HTTP客户端会认为你的内容是头部的一部分,这样它们就会搞混,可能会以为你请求的文档是空的。
接下来,你需要一个CGI服务器。Python自带一个。把你的脚本放在一个叫做cgi-bin
的子目录里,然后在上级目录运行这个命令:
python -m CGIHTTPServer
你调用的URL看起来会像这样:
curl http://localhost:8000/cgi-bin/cgitest.py