如何编写Python CGI程序与MySQL交互?

如何编写Python CGI程序与MySQL交互?

在Web开发中,CGI(Common Gateway Interface)是一个标准,它允许Web服务器在执行程序后,将程序的输出作为响应发送给客户端。在Python中,我们可以使用CGI模块编写CGI程序。同时,MySQL是一种流行的开源关系型数据库,这篇文章将介绍如何在Python CGI程序中与MySQL进行交互。

阅读更多:MySQL 教程

安装MySQL数据库和Python的MySQL驱动模块

首先,你需要在你的计算机上安装MySQL数据库,可以从其官网下载安装程序,然后按照安装步骤进行操作。接下来,你需要安装Python的MySQL驱动模块,你可以使用pip(Python的包管理工具)来安装“mysql-connector-python”模块。在命令行中输入以下指令即可安装:

pip install mysql-connector-python

连接MySQL数据库

在Python程序中与MySQL进行交互,首先需要连接到数据库,可以使用Python的“mysql-connector-python”模块中的“connect()”方法。在连接时,需要提供MySQL数据库的主机名,用户名,密码和要连接的数据库名称。下面是连接MySQL数据库的示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

print(mydb)

在执行上面的代码后,将会得到一个MySQL数据库的对象,你可以使用它来执行SQL语句。

插入数据到数据库

在Python中,向MySQL数据库插入数据,可以使用“INSERT INTO”语句。下面是将数据插入到MySQL数据库的代码示例:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")

mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "record inserted.")

在这个示例中,我们首先使用“cursor()”方法创建一个游标对象。接下来我们使用“execute()”方法来执行SQL语句,这里的SQL语句是将数据插入到一个名为“customers”的表中。最后,我们使用“commit()”方法向数据库中提交插入的数据。

查询数据

在Python中,查询MySQL数据库,可以使用“SELECT”语句。下面是查询数据的Python代码示例:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM customers"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

在这个示例中,我们首先使用“cursor()”方法创建一个游标对象,接下来我们使用“execute()”方法来执行SQL语句,这里的SQL语句是查询一个名为“customers”的表中的所有数据。最后,我们使用“fetchall()”方法来获取所有的查询结果。

更新和删除数据

在Python中,可以使用“UPDATE”和“DELETE”语句来更新和删除数据库中的数据。下面是更新和删除数据的Python示例代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Highway 21'"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "record(s) affected")

sql = "DELETE FROM customers WHERE address = 'Mountain 21'"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "record(s) deleted")

在这个示例中,我们分别使用“UPDATE”语句将表中地址为“Highway 21”的记录的地址字段更新为“Canyon 123”,使用“DELETE”语句将表中地址为“Mountain 21”的记录删除。

CGI程序与MySQL交互

在编写Python CGI程序时,我们需要将上述MySQL和Python代码整合起来,以便与MySQL数据库进行交互。

下面是一个简单的Python CGI程序,用来实现向MySQL数据库写入数据和查询数据:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import mysql.connector
import cgi

print("Content-type:text/html\r\n\r\n")

#连接到MySQL数据库
mydb = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="mydatabase"
)

#创建CGI表单对象
form = cgi.FieldStorage()

#如果表单中包含name和address字段,则向数据库中插入数据
if form.getvalue('name') and form.getvalue('address'):
    mycursor = mydb.cursor()
    sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
    val = (form.getvalue('name'), form.getvalue('address'))
    mycursor.execute(sql, val)
    mydb.commit()
    print("Data inserted successfully.")

#查询数据库中所有数据,并输出到html页面上
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()

print("<html>")
print("<head>")
print("<title>Python CGI Program with MySQL</title>")
print("</head>")
print("<body>")
print("<h2>Python CGI Program with MySQL</h2>")
print("<form method='post'>")
print("Name: <input type='text' name='name'><br>")
print("Address: <input type='text' name='address'><br>")
print("<input type='submit' value='Submit'>")
print("</form>")
print("<hr>")
print("<h3>Customers:</h3>")
print("<table>")
print("<tr><th>Name</th><th>Address</th></tr>")
for x in myresult:
    print("<tr><td>" + x[0] + "</td><td>" + x[1] + "</td></tr>")
print("</table>")
print("</table>")
print("</body>")
print("</html>")

在这个代码示例中,我们首先导入“cgi”和“mysql.connector”模块,这里的“cgi”模块是Python的CGI库,它允许我们在Python中读取CGI表单数据。接下来,我们使用“print()”函数输出HTTP头信息。然后我们建立MySQL数据库连接和CGI表单对象,并检查表单中是否包含名为“name”和“address”的字段。如果包含这些字段,则向MySQL数据库中插入数据,并输出成功消息。最后,我们使用一个HTML表格输出MySQL数据库中的所有数据。

结论

在本文中,我们学习了如何编写Python CGI程序与MySQL数据库进行交互。我们了解了如何连接MySQL数据库,如何向MySQL数据库中插入数据,如何查询数据,如何更新和删除数据,以及如何将上述Python和MySQL代码整合到CGI程序中。通过这篇文章,你现在应该对Python和MySQL交互有了更好的理解,并可以轻松地编写类似的Python CGI程序来处理Web请求并与MySQL数据库进行交互。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程