news 2026/4/23 18:48:47

【接口测试】5_PyMySQL模块 _数据库工具类封装

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【接口测试】5_PyMySQL模块 _数据库工具类封装

文章目录

  • 一、封装的目的
  • 二、封装实现(重点)
  • 三、搭建框架
  • 四、案例(重点)
    • 4.1 设置私有方法
    • 4.2 实现类方法
      • 4.2.1 查询一条记录
      • 4.2.2 增删改数据
    • 4.3 完整代码实现
  • 五、小结

一、封装的目的

  • 将 数据库常用的操作,封装成类中的方法。 将来在使用时,只需提供 要执行的SQL语句,给这个方法,即可执行。
  • 使用者,不需要关心:建立连接、创建游标、关闭游标、关闭连接

二、封装实现(重点)

类方法,可以用类名直接调用,添加装饰器。

类方法:create_conn()//获取数据库连接 类方法:close_conn()//关闭数据库连接 类方法:query_one(sql)//查询一条数据 类方法:db_uid(sql)//执行数据库增删改 要求:定义一个DBTools工具类,对外提供以上方法

三、搭建框架

# 定义 数据库工具类classDBTools(object):# 创建连接defcreate_conn(self):pass# 查一条记录defquery_one(self,sql):pass# 创建连接# 创建游标# 关闭游标# 关闭连接# 增删改记录defdb_uid(self,sql):pass# 创建连接# 创建游标# 关闭游标# 关闭连接

四、案例(重点)

idtitlepub_datereadcommentis_delete
1射雕英雄传1960-05-0112340
2天龙八部1966-07-2437400
3笑傲江湖1995-12-2423800

4.1 设置私有方法

让创建连接方法 create_conn( ) 对用户不可见(对用户没用),但是又不影响后面查询和修改方法使用。

—>设置私有方法 __create_conn( )

# 定义 数据库工具类classDBTools(object):# 创建连接 - 类方法。可以直接使用类名调用!@classmethoddef__create_conn(cls):conn=pymysql.connect(host="172.16.28.4",port=3306,user="root",password="root",database="books",charset="utf8")# 不能遗漏(创建连接之后,要返回结果)returnconn

4.2 实现类方法

4.2.1 查询一条记录

importpymysql# 定义 数据库工具类classDBTools(object):# 创建连接 - 类方法。可以直接使用类名调用!@classmethoddef__create_conn(cls):conn=pymysql.connect(host="172.16.28.4",port=3306,user="root",password="root",database="books",charset="utf8")# 不能遗漏(创建连接之后,要返回结果)returnconn# 查一条记录 - 封装为类方法,方便调用@classmethoddefquery_one(cls,sql):my_conn=Nonemy_cursor=Noneres=Nonetry:# 创建连接。借助类名,调用 类方法 create_conn。my_conn=DBTools.__create_conn()# 接收 return conn返回的结果,给my_conn# 创建游标my_cursor=my_conn.cursor()# 执行 sql 语句,做查询my_cursor.execute(sql)# 提取一条记录res=my_cursor.fetchone()exceptExceptionaserr:print("执行查询SQL失败:",str(err))finally:# 关闭游标my_cursor.close()# 关闭连接my_conn.close()# 返回查询结果returnresif__name__=='__main__':result=DBTools.query_one("select * from t_book;")print("查询语句的结果:",result)

4.2.2 增删改数据

importpymysql# 定义 数据库工具类classDBTools(object):# 创建连接 - 类方法。可以直接使用类名调用!@classmethoddef__create_conn(cls):conn=pymysql.connect(host="172.16.28.4",port=3306,user="root",password="root",database="books",charset="utf8")# 不能遗漏returnconn# 增删改记录@classmethoddefdb_uid(cls,sql):my_conn=Nonemy_cursor=Nonetry:# 创建连接.my_conn=DBTools.__create_conn()# 创建游标my_cursor=my_conn.cursor()# 执行 增删改 语句my_cursor.execute(sql)print("Affected rows:",my_conn.affected_rows())# 提交事务my_conn.commit()exceptExceptionaserr:print("执行 增删改 SQL 失败:",str(err))# 回滚事务my_conn.rollback()finally:# 关闭游标my_cursor.close()# 关闭连接my_conn.close()if__name__=='__main__':DBTools.db_uid("update t_book set `read` = 100 where id = 3;")

4.3 完整代码实现

文件:py08_db_tools.py

importpymysql# 定义 数据库工具类classDBTools(object):# 创建连接 - 类方法。可以直接使用类名调用!@classmethoddef__create_conn(cls):conn=pymysql.connect(host="172.16.28.4",port=3306,user="root",password="root",database="books",charset="utf8")# 不能遗漏returnconn# 查一条记录 - 封装为类方法,方便调用@classmethoddefquery_one(cls,sql):my_conn=Nonemy_cursor=Noneres=Nonetry:# 创建连接, 借助类名,调用 类方法 create_connmy_conn=DBTools.__create_conn()# 创建游标my_cursor=my_conn.cursor()# 执行 sql 语句,做查询my_cursor.execute(sql)# 提取一条记录res=my_cursor.fetchone()exceptExceptionaserr:print("执行查询SQL失败:",str(err))finally:# 关闭游标my_cursor.close()# 关闭连接my_conn.close()# 返回查询结果returnres# 增删改记录@classmethoddefdb_uid(cls,sql):my_conn=Nonemy_cursor=Nonetry:# 创建连接my_conn=DBTools.__create_conn()# 创建游标my_cursor=my_conn.cursor()# 执行 增删改 语句my_cursor.execute(sql)print("Affected rows:",my_conn.affected_rows())# 提交事务my_conn.commit()exceptExceptionaserr:print("执行 增删改 SQL 失败:",str(err))# 回滚事务my_conn.rollback()finally:# 关闭游标my_cursor.close()# 关闭连接my_conn.close()if__name__=='__main__':result=DBTools.query_one("select * from t_hero;")print("查询语句的结果:",result)DBTools.db_uid("update t_book set `read` = 100 where id = 3;")

五、小结

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:37:49

Java计算机毕设之基于springBoot的高校毕业生公职资讯系考试资讯聚合、考试日历管理、备考资源统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/23 11:21:00

Java毕设项目:基于springBoot的高校毕业生公职资讯系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/23 13:35:53

Java毕设选题推荐:基于springBoot的高校毕业生公职资讯系统的设计与实现资讯聚合 - 报考匹配 - 资源管理 - 互动交流” 一体化平【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/23 10:49:57

2025最新!专科生必备10个AI论文平台:开题报告文献综述全测评

2025最新!专科生必备10个AI论文平台:开题报告&文献综述全测评 2025年专科生论文写作工具测评:为何需要这份榜单? 随着人工智能技术的不断发展,越来越多的专科生开始借助AI工具提升论文写作效率。然而,面…

作者头像 李华
网站建设 2026/4/23 10:44:31

Jupyter Notebook实战:基于PyTorch-CUDA-v2.8的模型训练全流程

Jupyter Notebook实战:基于PyTorch-CUDA-v2.8的模型训练全流程 在深度学习项目中,最让人头疼的往往不是模型设计本身,而是“环境能不能跑起来”——CUDA版本不匹配、PyTorch安装失败、GPU识别不了……这些看似琐碎的问题,却常常耗…

作者头像 李华
网站建设 2026/4/19 4:54:12

清华镜像同步延迟问题应对策略:选择稳定时间点拉取

清华镜像同步延迟问题应对策略:选择稳定时间点拉取 在深度学习项目的日常开发中,一个看似微不足道的环节——容器镜像拉取,却可能成为整个流程的“拦路虎”。你是否经历过这样的场景:CI/CD 流水线突然失败,报错信息是…

作者头像 李华