PyMysql 02|(包含项目实战)数据库工具类封装

目录

七、数据库工具类封装

1、封装的目的

2、设计数据库工具类

3、实现类方法

1️⃣获取、关闭连接

2️⃣查询一条记录

3️⃣增删改数据

4️⃣完整封装代码实现


七、数据库工具类封装

1、封装的目的

将常用的数据库操作,封装到一个方法。 后续再操作数据库时,通过调用该方法来实现。

提高代码的复用性!

2、设计数据库工具类

class DBUtil(object):@classmethod        # 标明该方法为类方法,这样可以不用创建实例就可以调用方法def __getconn(cls): # __把该方法私有,只有类内部可以使用pass@classmethoddef __closeconn(cls):pass# 常用方法:查询一条@classmethoddef select_one(cls,sql):pass# 常用方法:增删改@classmethoddef uid_db(cls, sql):pass

3、实现类方法

1️⃣获取、关闭连接
import pymysql# 封装数据库工具类
class DBUtil(object):# 添加类属性conn = None@classmethoddef __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@classmethoddef __close_conn(cls):# 判断,conn 不为空,需要关闭。 if cls.conn is not None:cls.conn.close()cls.conn = None # 防止:即使数据库连接已经关闭,cls.conn 依然会保持指向一个已关闭的连接对象。
2️⃣查询一条记录
# 封装数据库工具类
class DBUtil(object):# 常用方法:查询一条@classmethoddef select_one(cls, sql):cursor = Noneres = Nonetry:# 获取连接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 resif __name__ == '__main__':res = DBUtil.select_one("select * from goods")print("查询一条数据的结果:",res)
3️⃣增删改数据
class DBUtil(object):# 常用方法:增删改@classmethoddef uid_db(cls, sql):cursor = Nonetry:# 获取连接和游标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# 常用方法:查询一条@classmethoddef __closeconn(cls):if cls.conn is not None:cls.conn.close()cls.conn = None@classmethoddef select_one(cls,sql):cursor = Noneres = Nonetry: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@classmethoddef uid_db(cls, sql):cursor = Nonetry: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 DBUtilres = DBUtil.select_one("select * from goods")
DBUtil.uid_db("delete from goods where id=24;")
print(res)


 

全部内容:

PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获-CSDN博客

PyMysql 01|(包含超详细项目实战)数据库工具类封装-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/66550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-table 自定义表头颜色

第一种方法&#xff1a;计算属性 <template><div><el-table:data"formData.detail"border stripehighlight-current-row:cell-style"{ text-align: center }":header-cell-style"headerCellStyle"><el-table-column fixed…

C#标识符和关键字

本文将学习两个重要的基本概念&#xff1a;标识符和关键字。 1. 标识符 我们继续秉承"从实践中学习"的理念&#xff0c;先来看一段代码&#xff0c;如代码清单3-1所示。 代码清单3-1 标识符 using System;namespace ProgrammingCSharp4 {class IdentifierSample{…

怎么管理电脑usb接口,分享四种USB端口管理方法

怎么管理电脑usb接口&#xff0c;分享四种USB端口管理方法 USB接口作为电脑重要的外部接口&#xff0c;方便了数据传输和设备连接。 然而&#xff0c;不加管理的USB接口也可能带来安全隐患&#xff0c;例如数据泄露、病毒传播等。 因此&#xff0c;有效管理电脑USB接口至关重…

从 TiDB 学习分布式数据库测试

前言 最近在研究数据库正确性测试相关的内容&#xff0c;恰好看到TiDB数据库在这方面的工作&#xff0c;很受启发&#xff0c;故写此文章。 推荐下一些TiDB官方好文章&#xff1a; 《分布式系统测试那些事儿 – 理念》https://cn.pingcap.com/blog/distributed-system-test-…

尚硅谷Vue3入门到实战 —— 04 OptionsAPI 与 CompositionAPI

我们看一下上一节的代码&#xff0c;如下&#xff1a; <template><div class"person"><h2>姓名&#xff1a; {{ name }}</h2><h2>年龄&#xff1a; {{ age }}</h2><button click"changeName">修改名字</but…

【物联网原理与运用】知识点总结(上)

目录 名词解释汇总 第一章 物联网概述 1.1物联网的基本概念及演进 1.2 物联网的内涵 1.3 物联网的特性——泛在性 1.4 物联网的基本特征与属性&#xff08;五大功能域&#xff09; 1.5 物联网的体系结构 1.6 物联网的关键技术 1.7 物联网的应用领域 第二章 感知与识别技术 2.1 …

Nginx:会话保持

会话保持 是指在负载均衡环境中,确保来自同一用户的多个请求都发送到同一个后端服务器。这通常用于那些需要记住用户状态或上下文的应用程序,例如购物车、登录状态等。 会话保持的重要性 用户体验:保证用户在整个会话期间的一致性体验,避免因不同服务器间的数据不同步导致…

SEO内容优化:如何通过用户需求赢得搜索引擎青睐?

在谷歌SEO优化中&#xff0c;内容一直是最重要的因素之一。但要想让内容真正发挥作用&#xff0c;关键在于满足用户需求&#xff0c;而不是简单地堆砌关键词。谷歌的算法越来越智能化&#xff0c;更注重用户体验和内容的实用性。 了解目标用户的需求。通过工具如Google Trends…

Clisoft SOS与CAD系统集成

Clisoft SOS与CAD系统集成 以下内容大部分来自官方文档&#xff0c;目前只用到与Cadence Virtuoso集成&#xff0c;其他还未用到&#xff0c;如有问题或相关建议&#xff0c;可以留言。 与Keysight ADS集成 更新SOS客户端配置文件sos.cfg&#xff0c;以包含支持ADS的模板&am…

Unity-Mirror网络框架从入门到精通之Attributes属性介绍

前言 在现代游戏开发中&#xff0c;网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架&#xff0c;专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文将深入介绍Mirror的基本概念、如何与其他网络框架进…

【计算机视觉】单目深度估计模型-Depth Anything-V2

概述 本篇将简单介绍Depth Anything V2单目深度估计模型&#xff0c;该模型旨在解决现有的深度估计模型在处理复杂场景、透明或反射物体时的性能限制。与前一代模型相比&#xff0c;V2版本通过采用合成图像训练、增加教师模型容量&#xff0c;并利用大规模伪标签现实数据进行学…

uni-app图文列表到详情页面切换

需求&#xff1a;参考若依框架后&#xff0c;想实现首页浏览文章列表&#xff0c;没有合适的样式参考&#xff0c;所以需要有效果做到“图文列表到详情页面切换”&#xff0c;查阅了一下案例 发现有相应的案例&#xff0c;在导航栏“模板”中找到了 DCloud 插件市场 PC电脑端访…

日志服务 SQL 引擎全新升级

作者&#xff1a;戴志勇、顾汉杰&#xff08;执少&#xff09; SQL 作为 SLS 基础功能&#xff0c;每天承载了用户大量日志数据的分析请求&#xff0c;既有小数据量的快速查询&#xff08;如告警、即席查询等&#xff09;&#xff1b;也有上万亿数据规模的报表级分析。SLS 作为…

【微服务】5、服务保护 Sentinel

Sentinel学习内容概述 Sentinel简介与结构 Sentinel是Spring Cloud Alibaba的组件&#xff0c;由阿里巴巴开源&#xff0c;用于服务流量控制和保护。其内部核心库&#xff08;客户端&#xff09;包含限流、熔断等功能&#xff0c;微服务引入该库后只需配置规则。规则配置方式有…

matlab编写Newton插值多项式

定义&#xff1a; 即&#xff1a; clear x [1, 2, 3, 4]; % x坐标 y [2, 1, 4, 3]; % y坐标 % 定义目标插值点 xi 2.5;% x: 已知数据点的x坐标% y: 已知数据点的y坐标% xi: 插值点&#xff0c;可以是一个数或一个向量n length(x);% 初始化差商矩阵F zeros(n, n);F(:,1…

unity学习14:unity里的C#脚本的几个基本生命周期方法, 脚本次序order等

目录 1 初始的C# 脚本 1.1 初始的C# 脚本 1.2 创建时2个默认的方法 2 常用的几个生命周期方法 2.1 脚本的生命周期 2.1.1 其中FixedUpdate 方法 的时间间隔&#xff0c;是在这设置的 2.2 c#的基本语法别搞混 2.2.1 基本的语法 2.2.2 内置的方法名&#xff0c;要求更严…

东土科技参股广汽集团飞行汽车初创公司,为低空经济构建新型产业生态

近日&#xff0c;广汽集团旗下专注于飞行汽车领域的初创公司广东高域科技有限公司于2024年12月31日正式成立&#xff0c;在穿透后的股东信息中&#xff0c;东土科技通过广州瓴云科技投资合伙企业&#xff08;有限合伙&#xff09;赫然在列。 此前12月18日&#xff0c;广汽集团…

基于Elasticsearch8的向量检索实现相似图形搜索

Elasticsearch8版本增加了KNN向量检索&#xff0c;可以基于此功能实现以图搜图功能。 1、首先创建索引&#xff0c;es提供了类型为dense_vector的字段&#xff0c;用于存储向量&#xff0c;其中dims是向量维度&#xff0c;可以不配置&#xff0c;es会根据第一条插入的向量维度…

PHP如何删除数组中的特定值?

php 中删除数组特定值的方法有三种&#xff1a;unset()&#xff1a;直接删除指定索引的值&#xff0c;但会保留数组索引结构和未删除元素&#xff0c;适合小数组。array_filter()&#xff1a;根据自定义回调函数筛选数组元素&#xff0c;返回一个新数组&#xff0c;原数组不变&…

计算效率提升 10 倍,存储成本降低 60%,灵犀科技基于 Apache Doris 建设统一数据服务平台

导读&#xff1a;灵犀科技早期基于 Hadoop 构建大数据平台&#xff0c;在战略调整和需求的持续扩增下&#xff0c;数据处理效率、查询性能、资源成本问题随之出现。为此&#xff0c;引入 Apache Doris 替换了复杂技术栈&#xff0c;升级为集存储、加工、服务为一体的统一架构&a…