我是Python和MySQL的新手,这是我的第一个Stack问题。因此,如果我遗漏了一些明显的内容,请提前道歉。但是,在问之前,我确实确实尝试过对此进行研究。
我正在尝试学习Python,MySQL和CGI脚本的基础知识。
我正在尝试让CURL GET或Python Requests GET在测试服务器上调用Python CGI脚本。然后,该Python CGI脚本将在本地MySQL数据库上执行读取操作,并将结果返回到CURL或Python请求。
我创建的Python CGI脚本将MySQL Read数据完美输出到远程测试服务器上的终端。但是,它不会将输出返回给CURL或触发CGI脚本的Python请求。
这是我拼凑的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或通过某种Return或Output语句传递回请求过程。但是,我为研究此问题所做的所有最大努力都无济于事。谁能指出我正确的方向?非常感谢您的帮助!
马克:-)
首先,按照您链接的CGI教程,您需要输出正在使用的内容类型:
print "Content-type: text/plain\r\n\r\n",
如果您至少没有换行符,HTTP客户端会认为您的内容应该是标头的一部分并感到困惑,他们可能会假设您要的文档为空。
接下来,您需要一个CGI服务器。Python附带一个。将您的脚本放在一个名为的子目录中,cgi-bin然后运行此命令(从父目录):
cgi-bin
python -m CGIHTTPServer
呼叫网址如下所示:
curl http://localhost:8000/cgi-bin/cgitest.py