首页 > 数据库 >数据库工具类封装(Pymysql)-python编写

数据库工具类封装(Pymysql)-python编写

时间:2022-12-27 01:00:47浏览次数:45  
标签:__ None 封装 python Pymysql cursor sql conn cls

import pymysql


# 封装数据库工具类
class DBUtil(object):
    # 添加类属性
    conn = None

    @classmethod
    def __get_conn(cls):
        # 判断 conn 是否为空,如果是,再创建
        if cls.conn is None:
            cls.conn = pymysql.connect(host="", port=3306, user="",
                                       password="", database="", charset="utf8")
        # 返回 非空连接
        return cls.conn

    @classmethod
    def __close_conn(cls):
        # 判断,conn 不为空,需要关闭。
        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.__get_conn()

            # 获取游标
            cursor = cls.conn.cursor()

            # 执行 查询语句
            cursor.execute(sql)

            # 提取一条结果
            res = cursor.fetchone()

        except Exception as err:
            print("查询sql错误:", str(err))
        finally:
            # 关闭游标
            cursor.close()

            # 关闭连接
            cls.__close_conn()

            # 将查询sql执行的 结果,返回
            return res

    # 常用方法:增删改
    @classmethod
    def uid_db(cls, sql):
        cursor = None
        try:
            # 获取连接
            cls.conn = cls.__get_conn()

            # 获取游标
            cursor = cls.conn.cursor()

            # 执行 uid 语句
            cursor.execute(sql)
            print("影响的行数:", cls.conn.affected_rows())

            # 提交事务
            cls.conn.commit()

        except Exception as err:
            # 回滚事务
            cls.conn.rollback()
            print("增删改 SQL 执行失败:", str(err))

        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_conn()


if __name__ == '__main__':
    res = DBUtil.select_one("sql")
    print("查询结果为:", res)

    DBUtil.uid_db("sql")

 

标签:__,None,封装,python,Pymysql,cursor,sql,conn,cls
From: https://www.cnblogs.com/noproblems/p/17007212.html

相关文章

  • 基于pybind11实现Python调用c++编写的CV算法--上(Windows+VS)
    C++是一种编译型(compiled)语言,设计重点是性能、效率和使用灵活性,偏向于系统编程、嵌入式、资源受限的软件和系统。Python是一种解释型(interpreted)语言,同样也支持不同的......
  • 电脑面试两道问题(python+shell)
    最近面试电脑代码面试遇到两个问题,供大家参考一下一、python脚本:手写一个函数,实现两个数相加,并使用unittest与pytest工具测试函数正确性。1.unnitest进行测试:importun......
  • Python音频处理
    加载音频,查看长度和采样率importlibrosaaudio_data='data/Data_MGTV/angry/audio_1027.wav'x,sr=librosa.load(audio_data)print(x.shape,sr)把某一文件夹......
  • Python学习笔记--PySpark的相关基础学习(一)
    PySpark包的下载下载PySpark第三方包:构建PySpark的执行环境入口对象PySpark的编程模型数据输入对于SparkContext对象里面的成员方法parallelize,支持:示例:读......
  • DSA-Python
    19.55AlgorithmsandDataStructuresTutorial-FullCourseforBeginnershttps://www.ytb*.com/watch?v=8hly31xKli0&t=334s1.Algorithm1.1IntroductionAlgorit......
  • Python爬虫 -- Selenium库的使用
    0x00Selenium库的作用模拟真实浏览器获取相关数据,比如有些网站检测token等值的时候,可以通过selenium库进行绕过0x01环境搭建1、安装selenium库pip3installselenium2、查......
  • 火山中文编程 -- 封装信息框API
     ......
  • 用Python编写EXP
    高考过后,你不用告诉我你考多少分,悲喜之后也不要告诉我你志愿填了哪里,只要告诉我最后去了哪?我坐火车或飞机要多久,在此停留能否蹭口饭吃,一本二本我真的分不清楚,我只知道你是我......
  • Python千万级字典快速去重脚本
    希望你每天醒来都是阳光的,不会因为别人的几句话,几个表情和几个举止影响自己的心情,好好生活,总会遇见美好的事。。。---- 网易云热评 一、下载地址​​https://github.com/......
  • [oeasy]python0033_任务管理_jobs_切换任务_进程树结构_fg
    ​ 查看进程回忆上次内容上次先进程查询ps-elf查看所有进程信息ps-lf查看本终端相关进程信息杀死进程kill-9PID给进程发送死亡信号运行多个py......