小编典典

返回Python CGI MySQL脚本的输出

sql

我是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语句传递回请求过程。但是,我为研究此问题所做的所有最大努力都无济于事。谁能指出我正确的方向?非常感谢您的帮助!

马克:-)


阅读 210

收藏
2021-04-14

共1个答案

小编典典

首先,按照您链接的CGI教程,您需要输出正在使用的内容类型:

print "Content-type: text/plain\r\n\r\n",

如果您至少没有换行符,HTTP客户端会认为您的内容应该是标头的一部分并感到困惑,他们可能会假设您要的文档为空。

接下来,您需要一个CGI服务器。Python附带一个。将您的脚本放在一个名为的子目录中,cgi-bin然后运行此命令(从父目录):

python -m CGIHTTPServer

呼叫网址如下所示:

curl http://localhost:8000/cgi-bin/cgitest.py
2021-04-14