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

CherryPyWSGI服务器在Python中的数据库连接与操作示例

发布时间:2023-12-26 02:52:06

CherryPy是一个轻量级的、高效的Web框架,它支持通过WSGI(Web Server Gateway Interface)进行服务器连接。在Python中,我们可以使用CherryPy服务器来连接和操作数据库。

下面是一个使用CherryPy服务器连接和操作MySQL数据库的示例,包括数据库的创建、插入、查询和删除操作:

import cherrypy
import mysql.connector

# 创建数据库连接
def create_connection():
    return mysql.connector.connect(
        host="localhost",
        user="root",
        password="password",
        database="test"
    )

# 创建数据库
def create_database():
    connection = create_connection()
    cursor = connection.cursor()
    cursor.execute("CREATE DATABASE IF NOT EXISTS test")
    connection.close()

# 创建数据表
def create_table():
    connection = create_connection()
    cursor = connection.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")
    connection.close()

# 插入数据
def insert_data(name, age):
    connection = create_connection()
    cursor = connection.cursor()
    sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
    values = (name, age)
    cursor.execute(sql, values)
    connection.commit()
    connection.close()

# 查询数据
def select_data():
    connection = create_connection()
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM users")
    result = cursor.fetchall()
    connection.close()
    return result

# 删除数据
def delete_data(id):
    connection = create_connection()
    cursor = connection.cursor()
    sql = "DELETE FROM users WHERE id = %s"
    value = (id,)
    cursor.execute(sql, value)
    connection.commit()
    connection.close()

# CherryPy Web应用
class DatabaseApp(object):

    @cherrypy.expose
    def index(self):
        # 创建数据库
        create_database()
        # 创建数据表
        create_table()
        return "Database created."

    @cherrypy.expose
    def insert(self, name, age):
        # 插入数据
        insert_data(name, age)
        return "Data inserted."

    @cherrypy.expose
    def select(self):
        # 查询数据
        result = select_data()
        response = ""
        for row in result:
            response += f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}
"
        return response

    @cherrypy.expose
    def delete(self, id):
        # 删除数据
        delete_data(id)
        return "Data deleted."

if __name__ == '__main__':
    cherrypy.quickstart(DatabaseApp())

在上面的示例中,我们首先创建了一个名为create_connection的函数,用于创建与MySQL数据库的连接。然后,我们定义了一系列用于创建数据库、创建数据表、插入数据、查询数据和删除数据的函数。这些函数分别通过连接和操作数据库来执行相应的任务。

接下来,我们定义了一个名为DatabaseApp的CherryPy Web应用类,其中包含了indexinsertselectdelete方法,它们分别对应不同的URL路径和相应的操作。在这些方法中,我们调用前面定义的数据库操作函数来连接和操作MySQL数据库。

最后,我们在__main__函数中使用cherrypy.quickstart来启动CherryPy服务器,并将DatabaseApp类作为参数传入。这样,我们就可以通过访问相应的URL路径来执行数据库的操作。

请注意,上面的示例仅演示了基本的数据库连接和操作,实际应用中可能需要处理更多的错误和异常情况,并进行更完整的输入验证和安全性控制。