在Python中,我们经常需要与数据库进行交互,而pymysql是一个常用的库,用于连接MySQL数据库。为了提高开发效率,我们可以将常用的数据库操作封装成一个工具类。本文将详细介绍如何编写一个pymysql工具类,并解释每个字段的作用。
首先,我们需要导入pymysql库和日志模块。pymysql库用于连接MySQL数据库,而日志模块用于记录程序运行过程中的信息。
import pymysql
from utils.LogUtil import tester_log
接下来,我们定义一个名为Mysql的类,用于封装数据库操作。在这个类中,我们定义了以下方法:
下面是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()
现在我们来解释一下每个字段的作用:
通过以上介绍,我们可以看到,编写一个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工具类可以方便地完成数据库操作。希望本文能帮助到您,祝您学习愉快!