PyMysql 02|(包含项目实战)数据库工具类封装
目录
七、数据库工具类封装
1、封装的目的
2、设计数据库工具类
3、实现类方法
1️⃣获取、关闭连接
2️⃣查询一条记录
3️⃣增删改数据
4️⃣完整封装代码实现
七、数据库工具类封装
1、封装的目的
将常用的数据库操作,封装到一个方法。 后续再操作数据库时,通过调用该方法来实现。
提高代码的复用性!
2、设计数据库工具类
class DBUtil(object):
@classmethod # 标明该方法为类方法,这样可以不用创建实例就可以调用方法
def __getconn(cls): # __把该方法私有,只有类内部可以使用
pass
@classmethod
def __closeconn(cls):
pass
# 常用方法:查询一条
@classmethod
def select_one(cls,sql):
pass
# 常用方法:增删改
@classmethod
def uid_db(cls, sql):
pass
3、实现类方法
1️⃣获取、关闭连接
import pymysql
# 封装数据库工具类
class DBUtil(object):
# 添加类属性
conn = None
@classmethod
def __get_conn(cls):
# 判断 conn 是否为空, 如果是,再创建
if cls.conn is None:
cls.conn = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
# 返回 非空连接
return cls.conn
@classmethod
def __close_conn(cls):
# 判断,conn 不为空,需要关闭。
if cls.conn is not None:
cls.conn.close()
cls.conn = None # 防止:即使数据库连接已经关闭,cls.conn 依然会保持指向一个已关闭的连接对象。
2️⃣查询一条记录
# 封装数据库工具类
class DBUtil(object):
# 常用方法:查询一条
@classmethod
def select_one(cls, sql):
cursor = None
res = None
try:
# 获取连接
cls.conn = cls.__get_conn()
# 获取游标
cursor = cls.conn.cursor()
# 执行查询语句
cursor.execute(sql)
# 提取一条结果
res = cursor.fetchone()
except Exception as err:
print("查询sql错误:", str(err))
finally:
# 关闭游标
cursor.close()
# 关闭连接
cls.__closeconn()
# 将sql查询结果返回
return res
if __name__ == '__main__':
res = DBUtil.select_one("select * from goods")
print("查询一条数据的结果:",res)
3️⃣增删改数据
class DBUtil(object):
# 常用方法:增删改
@classmethod
def uid_db(cls, sql):
cursor = None
try:
# 获取连接和游标
cls.conn = cls.__getconn()
cursor = cls.conn.cursor()
# 执行uid语句
cursor.execute(sql)
print("影响的行数:", cls.conn.affected_rows())
# 提交事务
cls.conn.commit()
except Exception as err:
# 回滚事务
cls.conn.rollback()
print("UID操作失败:", str(err))
finally:
# 关闭游标和连接
cursor.close()
cls.conn.close()
if __name__ == '__main__':
DBUtil.uid_db("insert into goods values (0,'数据库工具类封装测试英寸笔记本',1,1,'2999',default,default);")
4️⃣完整封装代码实现
py数据库工具类封装Test07.py
import pymysql
class DBUtil(object):
conn =None
@classmethod # 标明该方法为类方法,这样可以不用创建实例就可以调用方法
def __getconn(cls): # __把该方法私有,只有类内部可以使用
if cls.conn is None:
cls.conn = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
return cls.conn
# 常用方法:查询一条
@classmethod
def __closeconn(cls):
if cls.conn is not None:
cls.conn.close()
cls.conn = None
@classmethod
def select_one(cls,sql):
cursor = None
res = None
try:
cls.conn = cls.__getconn()
cursor = cls.conn.cursor()
cursor.execute(sql)
res = cursor.fetchone()
except Exception as err:
print("查询操作失败:",str(err))
finally:
cursor.close()
cls.__closeconn()
return res
@classmethod
def uid_db(cls, sql):
cursor = None
try:
cls.conn = cls.__getconn()
cursor = cls.conn.cursor()
cursor.execute(sql)
print("影响的行数:", cls.conn.affected_rows())
cls.conn.commit()
except Exception as err:
cls.conn.rollback()
print("UID操作失败:", str(err))
finally:
cursor.close()
cls.conn.close()
if __name__ == '__main__':
# res = DBUtil.select_one("select * from goods")
# print("查询一条数据的结果:",res)
DBUtil.uid_db("insert into goods values (0,'数据库工具类封装测试英寸笔记本',1,1,'2999',default,default);")
py使用数据库工具类.py
from py数据库工具类封装Test07 import DBUtil
res = DBUtil.select_one("select * from goods")
DBUtil.uid_db("delete from goods where id=24;")
print(res)
全部内容:
PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获-CSDN博客
PyMysql 01|(包含超详细项目实战)数据库工具类封装-CSDN博客