接口测试Day09-数据库工具类封装

发布于:2025-02-10 ⋅ 阅读:(24) ⋅ 点赞:(0)
  • 封装目的

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

# 封装数据库工具类

class DBUtil(object):
    @classmethod
    def __get_conn(cls):  # 私有方法
        pass

    @classmethod
    def __close_conn(cls):  # 私有方法,定义成私有方法后,用户调用方法时看不到了,类名.关联的方法列表看不到私有方法
        pass

    # 常用方法 查询
    @classmethod
    def select_one(cls, sql):
       pass

    # 常用方法 增删改
    @classmethod
    def uid_db(cls, sql):
        pass


if __name__ == '__main__':
    # 定义为类方法,就不用创建类实例,可以直接使用类名.方法名()调用
    DBUtil.select_one("select * from  ")
    DBUtil.uid_db("update/insert/delete ")


    
    

实现类方法

  • 获取、关闭连接
# 封装数据库工具类
import pymysql

class DBUtil(object):
    
    # 添加类属性
    conn = None
    
    @classmethod
    def __get_conn(cls):  # 私有方法
       
        """
         判断 conn 是否为空,
         如果是,再创建连接;
         如果不为空(之前已经建立过连接),就不需要再次建立连接类
        :return: 返回conn ,给别人使用
        """
        if cls.conn is None:
            cls.conn = pymysql.connect(host="211.103.136.244", port=7061, user="student",
                           password="iHRM_student_2021", database="test_db",charset="utf8")
        # 返回非 空连接
        return  cls.conn 

    @classmethod
    def __close_conn(cls):  # 私有方法,定义成私有方法后,用户调用方法时看不到了,类名.关联的方法列表看不到私有方法
        """
        判断 连接不为空,则关闭连接,并且把连接置为 None
        :return: 
        """
        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("查询语句错误:", 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()
            
            # 执行 增删改 语句
            cursor.execute(sql)
            print("影响的行数:", cls.conn.affected_rows())
            
            # 提交事务
            cls.conn.commit()
        except Exception as err:
            print("增删改执行失败", str(err))
            # 回滚事务
            cls.conn.rollback()
        finally:
            # 关闭游标
            cursor.close()
            
            # 关闭连接
            cls.__close_conn()

  • 完整封装代码实现

# 封装数据库工具类
import pymysql

class DBUtil(object):

    # 添加类属性
    conn = None

    @classmethod
    def __get_conn(cls):  # 私有方法

        """
         判断 conn 是否为空,
         如果是,再创建连接;
         如果不为空(之前已经建立过连接),就不需要再次建立连接类
        :return: 返回conn ,给别人使用
        """
        if cls.conn is None:
            cls.conn = pymysql.connect(host="211.103.136.244", port=7061, user="student",
                           password="iHRM_student_2021", database="test_db",charset="utf8")
        # 返回非 空连接
        return  cls.conn

    @classmethod
    def __close_conn(cls):  # 私有方法,定义成私有方法后,用户调用方法时看不到了,类名.关联的方法列表看不到私有方法
        """
        判断 连接不为空,则关闭连接,并且把连接置为 None
        :return:
        """
        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("查询语句错误:", 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()

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

            # 提交事务
            cls.conn.commit()
        except Exception as err:
            print("增删改执行失败", str(err))
            # 回滚事务
            cls.conn.rollback()
        finally:
            # 关闭游标
            cursor.close()

            # 关闭连接
            cls.__close_conn()




if __name__ == '__main__':
    # 定义为类方法,就不用创建类实例,可以直接使用类名.方法名()调用
    # DBUtil.select_one("select * from  ")
    # DBUtil.uid_db("update/insert/delete ")
    res = DBUtil.select_one("select * from t_book;")
    print("查询结果为:", res)
    DBUtil.uid_db("update t_book set is_delete = 1 where id = 1111;")



网站公告

今日签到

点亮在社区的每一天
去签到