pymysql工具类封装详解

2023-12-26 14:39:56

在Python中,我们经常需要与数据库进行交互,而pymysql是一个常用的库,用于连接MySQL数据库。为了提高开发效率,我们可以将常用的数据库操作封装成一个工具类。本文将详细介绍如何编写一个pymysql工具类,并解释每个字段的作用。

首先,我们需要导入pymysql库和日志模块。pymysql库用于连接MySQL数据库,而日志模块用于记录程序运行过程中的信息。

import pymysql
from utils.LogUtil import tester_log

接下来,我们定义一个名为Mysql的类,用于封装数据库操作。在这个类中,我们定义了以下方法:

  1. init:初始化方法,用于创建数据库连接和游标对象。
  2. fetchone:执行SQL语句,获取一条数据。
  3. fetchall:执行SQL语句,获取所有数据。
  4. exec:执行SQL语句,提交事务。如果发生异常,则回滚事务并记录错误日志。
  5. del:析构方法,用于关闭游标和连接。

下面是Mysql类的完整代码:

class Mysql:
    def __init__(self, host, user, password, database, port=3306, charset='utf8mb4'):
        # 初始化日志对象
        self.log = tester_log("AssertUil")
        # 连接数据库
        self.conn = pymysql.connect(
            host=host,
            user=user,
            password=password,
            database=database,
            port=port,
            charset=charset
        )
        # 创建游标对象
        self.cursor = self.conn.cursor()

    def fetchone(self, sql):
        # 执行SQL语句,获取一条数据
        self.cursor.execute(sql)
        return self.cursor.fetchone()

    def fetchall(self, sql):
        # 执行SQL语句,获取所有数据
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    def exec(self, sql):
        try:
            # 如果连接和游标存在,执行SQL语句并提交事务
            if self.conn and self.cursor:
                self.cursor.execute(sql)
                self.conn.commit()
        except Exception as ex:
            # 如果发生异常,回滚事务并记录错误日志
            self.conn.rollback()
            self.log.error("Mysql 执行失败")
            self.log.error(ex)
            return False
        return True

    def __del__(self):
        # 关闭游标和连接
        if self.cursor is not None:
            self.cursor.close()
        if self.conn is not None:
            self.conn.close()

现在我们来解释一下每个字段的作用:

  1. log:日志对象,用于记录程序运行过程中的信息。在这里,我们使用了一个名为tester_log的函数来创建一个日志对象。这个函数接收一个字符串参数,表示日志的名称。
  2. conn:数据库连接对象,用于连接MySQL数据库。在这里,我们使用pymysql库的connect函数来创建一个连接对象。这个函数接收多个参数,包括主机地址、用户名、密码、数据库名、端口号和字符集等。
  3. cursor:游标对象,用于执行SQL语句和获取查询结果。在这里,我们使用数据库连接对象的cursor方法来创建一个游标对象。游标对象有两个主要方法:execute和fetchone/fetchall。execute方法用于执行SQL语句,fetchone方法用于获取一条查询结果,fetchall方法用于获取所有查询结果。
  4. host:数据库主机地址。这是连接到MySQL数据库所需的信息之一。
  5. user:数据库用户名。这是连接到MySQL数据库所需的信息之一。
  6. password:数据库密码。这是连接到MySQL数据库所需的信息之一。
  7. database:要连接的数据库名称。这是连接到MySQL数据库所需的信息之一。
  8. port:数据库端口号。这是连接到MySQL数据库所需的信息之一。默认值为3306。
  9. charset:数据库字符集。这是连接到MySQL数据库所需的信息之一。默认值为’utf8mb4’。

通过以上介绍,我们可以看到,编写一个pymysql工具类可以大大提高开发效率。在实际使用中,我们只需要创建一个Mysql对象,然后调用其方法即可完成数据库操作。例如:

# 创建一个Mysql对象
mysql = Mysql(host="localhost", user="root", password="123456", database="testdb")

# 执行SQL语句,获取一条数据
result = mysql.fetchone("SELECT * FROM users WHERE id = 1")
print(result)

# 执行SQL语句,获取所有数据
results = mysql.fetchall("SELECT * FROM users")
for row in results:
    print(row)

# 执行SQL语句,提交事务
mysql.exec("INSERT INTO users (name, age) VALUES ('张三', 25)")

# 关闭游标和连接
del mysql

通过以上示例,我们可以看到,使用Mysql工具类可以方便地完成数据库操作。希望本文能帮助到您,祝您学习愉快!

文章来源:https://blog.csdn.net/python_jeff/article/details/135219964
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。