📜  从输入输出到数据库 cgi (1)

📅  最后修改于: 2023-12-03 14:49:28.773000             🧑  作者: Mango

从输入输出到数据库 CGI

CGI(Common Gateway Interface)允许 Web 服务器运行程序并将结果返回到客户端浏览器。在数据处理过程中,输入和输出是关键点。本文将介绍从输入输出到数据库的 CGI 过程。

CGI 输入

Web 服务器在接收到客户端的请求后,共享数据作为 CGI 输入的方式。这些数据可以是两种类型:查询字符串或标准输入。查询字符串是一组键/值对,这些键/值对是 URL 的一部分,以问号开始(由浏览器提交给服务器)。标准输入是通过 POST 方法在 HTTP 请求正文中提供的表单数据。

解析查询字符串

查询字符串是 Web 服务器向 CGI 脚本发送的信息,可以通过许多语言和库解析和解码。以下是 Python 中解析查询字符串的示例:

import cgi

query_string = "name=John&age=27"
data = cgi.parse_qs(query_string)
print(data)
# {'name': ['John'], 'age': ['27']}
解析标准输入

标准输入是 POST 方法中提交的表单数据。在 Python 中,可以使用 cgi.FieldStorage() 对象访问标准输入,如下所示:

import cgi

form = cgi.FieldStorage()
name = form.getvalue('name')
age = form.getvalue('age')
CGI 输出

CGI 脚本的输出是向客户端浏览器发送的数据。我们可以使用标准输出来将 HTML 或者其他类型数据发送到客户端。

输出 HTML

以下是 Python 中输出 HTML 的示例:

print("Content-type:text/html\r\n\r\n")
print("<html>")
print("<head>")
print("<title>Hello World - First CGI Program</title>")
print("</head>")
print("<body>")
print("<h2>Hello World! This is my first CGI program</h2>")
print("</body>")
print("</html>")
输出其他数据类型

除了 HTML 之外,我们还可以将任何其他类型的数据发送到客户端浏览器。下面是 Python 中输出 JSON 的示例:

import json

data = {'name': 'John', 'age': 27}
json_data = json.dumps(data)

print("Content-type: application/json\r\n\r\n")
print(json_data)
CGI 数据库操作

通过 CGI,我们可以访问和操纵数据库。下面是一个简单的 Python MySQL 示例:

import pymysql

db = pymysql.connect(host="localhost", user="root",
                     password="password", database="mydatabase")
cursor = db.cursor()

# 执行 SQL 查询语句
cursor.execute("SELECT * FROM customers")

# 获取所有记录列表
results = cursor.fetchall()
for row in results:
    id = row[0]
    name = row[1]
    address = row[2]
    city = row[3]
    print("ID: %d, Name: %s, Address: %s, City: %s" % \
          (id, name, address, city))

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

以上就是从输入输出到数据库的 CGI 编程过程。要注意的是,在输出和数据库操作中,都需要先向客户端浏览器发送正确的 HTTP 标头。具体的标头取决于我们要发送的内容类型。