首页 > 数据库 >pymysql封装

pymysql封装

时间:2022-10-14 16:14:01浏览次数:55  
标签:封装 self pymysql cursor sql return conn

  1 import pymysql
  2 from configs.global_data import Mysql
  3 from pymysql.cursors import DictCursor
  4 
  5 
  6 class MysqlHandler:
  7 
  8     def __init__(self):
  9         # 创建数据库连接
 10         self.conn = pymysql.connect(**Mysql.db_config)
 11 
 12     def __del__(self):
 13         """
 14         对象销毁时自动执行关闭数据库连接
 15         :return:
 16         """
 17         self.conn.close()
 18 
 19     def fetchone(self, sql):
 20         """
 21         获取数据库一条数据
 22         :param sql: 要执行的sql语句
 23         :return:
 24         """
 25         # 创建游标
 26         with self.conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
 27             # 执行sql
 28             cursor.execute(sql)
 29             # 获取数据
 30             return cursor.fetchone()
 31 
 32     def fetchmany(self, sql):
 33         """
 34         获取数据库多条数据
 35         :param sql: 要执行的sql语句
 36         :return:
 37         """
 38         # 创建游标
 39         with self.conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
 40             # 执行sql
 41             cursor.execute(sql)
 42             # 获取数据
 43             return cursor.fetchmany()
 44 
 45     def fetchall(self, sql):
 46         """
 47         获取全部数据
 48         :param sql: 要执行的sql语句
 49         :return:
 50         """
 51         # 创建游标
 52         with self.conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
 53             # 执行sql
 54             cursor.execute(sql)
 55             # 获取数据
 56             return cursor.fetchall()
 57 
 58     def is_exist(self, sql):
 59         """
 60         是否存在数据
 61         :param sql: 要执行的sql语句
 62         :return:
 63         """
 64         # 创建游标
 65         with self.conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
 66             # 执行sql
 67             cursor.execute(sql)
 68             # 判断数据是否存在
 69             if cursor.fetchone():
 70                 return True
 71             else:
 72                 return False
 73 
 74     def insert_into(self, sql):
 75         """
 76         插入数据
 77         :param sql: 要执行的sql
 78         :return:
 79         """
 80         try:
 81             with self.conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
 82                 # 执行sql
 83                 cursor.execute(sql)
 84                 # 提交事务
 85                 self.conn.commit()
 86         except Exception as e:
 87             self.conn.rollback()
 88             raise e
 89 
 90     def update(self, sql):
 91         """
 92         更新数据
 93         :param sql: 要执行的sql
 94         :return:
 95         """
 96         try:
 97             with self.conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
 98                 # 执行sql
 99                 cursor.execute(sql)
100                 # 提交事务
101                 self.conn.commit()
102         except Exception as e:
103             self.conn.rollback()
104             raise e
105 
106     def delete(self, sql):
107         """
108         删除数据
109         :param sql: 要执行的sql
110         :return:
111         """
112         try:
113             with self.conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
114                 # 执行sql
115                 cursor.execute(sql)
116                 # 提交事务
117                 self.conn.commit()
118         except Exception as e:
119             self.conn.rollback()
120             raise e
121 
122 
123 if __name__ == '__main__':
124     db = MysqlHandler()
125     sql1 = "SELECT * FROM `user` LIMIT 10"
126     res = db.fetchone(sql1)
127     print(res)

 

标签:封装,self,pymysql,cursor,sql,return,conn
From: https://www.cnblogs.com/Nichs/p/16791898.html

相关文章

  • uni-app 4.7封装头像组件
    创建free-avart.vue文件<template><image:src="src"mode="widthFix":style="getStyle":class="type"></image></template><script>exportdefault{props:{......
  • uni-app 4.10封装聊天列表组件
    聊天组件free-media-list.vue,如下代码<template><viewhover-class="bg-light"><divclass="flexalign-stretch"><viewclass="flexalign-centerjustify-c......
  • uni-app 4.11封装全局mixin
    封装mixin(free-base.js)import$Timefrom"@/common/free-lib/time.js";exportdefault{filters:{formateTime(value){return$Time.gettime(value);}......
  • APICloud AVM框架 封装虚拟数字键盘组件
    AVM(Application-View-Model)前端组件化开发模式基于标准WebComponents组件化思想,提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具,完全兼容WebComponents标......
  • APICloud AVM 框架 封装树形分类选择组件 组件递归调用
    由于项目中,需要用到追加表单项目的功能,而表单项目在PC端是树形列表的形式展现,而且要实现多选功能,依上述需求开发了树形分类选择组件。组件开发中用到的知识要点是:组件递归......
  • js封装数组方法(注意:不是函数)
    对于函数都会封装,但是让你封装一个方法怎么办?首先要知道函数的概念:函数也是一个对象函数中可以封装一些功能,在需要的使用可以执行这些功能函数中也可以保存一些代码在......
  • vue封装自己的axios
    在项目中封装自己的axios在src目录下建立一个unit文件夹//unit=>http.jsimportaxiosfrom"axios";consthttp=axios.create({baseURL:"xxxx",......
  • 转:结构休中char*没有指定长度应该如何封装?
    我以前封装的c++结构体的字符串一般都有长度,如:typedefstructPP{intsize;charvalue[20];}以上结构本容易封装,只需要c#中封装为指定长度的string即可,但c中......
  • js 封装一个实现数组、对象深拷贝的函数
    HTML代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport......
  • 封装
    私有成员变量、私有成员方法案例私有成员变量和私有成员方法无法被类对象直接使用,否则会报错如下案例,类对象使用私有成员方法会报错如下案例,类对象使用私......