Python之数据库工具类的封装代码

数据库工具类封装

封装的目的:

  • 将常用的数据库操作,封装到一个方法。后续再操作数据库时候,通过调用该方法来实现
  • 提高代码的复用性

设计数据库工具类

获取关闭连接


import pymysql

class DBUtil:
    # 定义类属性,为了解决报黄的问题
    conn = None

    # 链接数据库
    @classmethod
    def __connect_db(cls):
        cls.conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="iHRM_student_2022",
                                   database="test_db", charset="utf8")
        return cls.conn

    # 关闭数据库
    @classmethod
    def __close_db(cls):
        cls.conn.close()  # 类属性可以直接调用方法,但不会提示

    # 封装读取的方法
    @classmethod
    def query_db(cls, sql):

        result = None
        cursor = None
        try:
            # 创建数据库的链接
            cls.conn = cls.__connect_db()
            # 获取游标
            cursor = cls.conn.cursor()

            # 执行sql,return 查询的结果

            cursor.execute(sql)
            result = cursor.fetchone()  # 提取第一行



        except Exception as err:
            print("读取数据库报错:", err)
        finally:
            # 关闭游标
            cursor.close()
            # 关闭链接
            cls.__close_db()

            return result

    # 封装增删改的方法
    @classmethod
    def update_db(cls, sql):
        cursor = None
        try:
            # 创建数据库的链接
            cls.conn = cls.__connect_db()
            # 获取游标
            cursor = cls.conn.cursor()
            # 执行sql,打印一下影响的行数
            cursor.execute(sql)
            affect_rows = cls.conn.affected_rows()
            print("影响数据库的行数:", affect_rows)
            # 事务的提交和回滚
            cls.conn.commit()
        except Exception as err:
            # 事务的回滚
            cls.conn.rollback()
            print("增删改数据库报错:", err)
            pass
        finally:
            # 关闭游标
            cursor.close()
            # 关闭链接
            cls.__close_db()


if __name__ == '__main__':
    res1 = DBUtil.query_db("select  * from t_book  ;")
    print(res1)

    DBUtil.update_db("insert into t_book (id,title,pub_date) VALUES(1256345253,'钢铁侠 ','2022-5-1');")
    res2 = DBUtil.query_db("select  * from t_book where id = 10145253  ;")
    print(res2)
    pass



```python

运行结果


(2, '西游记', datetime.date(1980, 1, 1), 1, 0, 0)
影响数据库的行数: 1
(1255, '钢铁侠 ', datetime.date(2022, 5, 1), 0, 0, 0)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值