欢迎访问宙启技术站
智能推送

Python中的CGI编程和数据库交互

发布时间:2023-12-19 02:52:02

CGI(通用网关接口)是一种标准,用于在Web服务器和应用程序之间传递数据。在Python中,可以使用CGI模块来实现CGI编程。

CGI编程主要包括两个部分:服务器端和客户端。服务器端通过CGI脚本处理客户端的请求,并返回相应的内容。客户端通过发送HTTP请求到服务器来获取内容。

下面是一个简单的CGI脚本的示例,用于处理表单提交的数据,并将数据存储到MySQL数据库中:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import cgi
import MySQLdb

# 连接MySQL数据库
db = MySQLdb.connect(host="localhost", user="username", passwd="password", db="database")

# 创建游标对象
cursor = db.cursor()

# 创建表格
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT)")

# 获取表单数据
form = cgi.FieldStorage()
name = form.getvalue('name')
age = form.getvalue('age')

# 将数据插入数据库
cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", (name, age))
db.commit()

# 查询数据库中的数据
cursor.execute("SELECT * FROM users")
data = cursor.fetchall()

# 输出查询结果
print "Content-type:text/html\r
\r
"
print "<html>"
print "<head>"
print "<title>CGI Example</title>"
print "</head>"
print "<body>"
print "<h2>Users:</h2>"
print "<table>"
print "<tr><th>ID</th><th>Name</th><th>Age</th></tr>"
for row in data:
   print "<tr><td>%d</td><td>%s</td><td>%d</td></tr>" % (row[0], row[1], row[2])
print "</table>"
print "</body>"
print "</html>"

# 关闭数据库连接
db.close()

在此示例中,我们首先导入了cgiMySQLdb模块。然后,我们使用MySQLdb.connect()函数连接到MySQL数据库,指定主机、用户名、密码和数据库名。接下来,我们使用cursor()方法创建一个游标对象,用于执行SQL语句。

我们先创建了一个名为users的表,用于存储用户信息(包括id、name和age字段)。在接收到表单数据后,我们使用cursor.execute()方法将数据插入到表中,并通过db.commit()方法提交事务。

然后,我们使用cursor.execute()方法查询数据库中的所有数据,并使用cursor.fetchall()方法获取查询结果。

最后,我们在HTTP响应中输出查询结果,使用的是HTML标记语言。在输出时,我们使用%操作符将查询结果中的数据填充到HTML模板中。

此外,我们还需要在Web服务器上进行一些配置,以支持CGI脚本。具体的配置方法取决于使用的Web服务器。一般来说,需要将CGI脚本放在特定的目录下,并将该目录配置为CGI脚本的执行目录。

以上就是一个简单的Python CGI编程和数据库交互的示例。通过CGI脚本,我们可以接收表单数据,并将其存储到数据库中。然后,我们可以查询数据库,并将查询结果返回给客户端。