【软件测试】接口自动化如何封装mysql操作

🍅 视频学习:文末有免费的配套视频可观看

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

数据查询类封装

1. 功能分析

  1. 可以连接不同sql数据库
  2. 查一条数据,多条数据
  3. 可以获取不同格式的数据

2. 封装成数据库查询类

封装思路:       

  1. 数据库查询模块有多个功能,且需要复用,所以封装成类
  2. 创建对象方法实现各种查询
  3. 在构造方法中创建连接 
  • 废话不多说,直接上代码!!!

     
    
    # -*- coding: utf-8 -*-
    # @Time : 2019/11/13 14:51
    # @Author : kira
    # @Email : 262667641@qq.com
    # @File : do_mysql.py
    # @Project : risk_project
    
    import pymysql
    from pymysql.cursors import DictCursor
    
    
    class DoMysql:
        """
        sql数据库查询类
        """
    
        def __init__(self, db_config: dict):
            # 创建连接
            engine = db_config.pop('engine', 'mysql')
            if engine.lower() == 'mysql':
                self.conn = pymysql.connect(**db_config)
            elif engine.lower() == 'oracle':
                pass
    
        def __execute(self, sql, action, res_type='t', *args):
            """
            :param sql:
            :param action: 字符串,指定执行cursor对应的方法
            :param res_type: 返回数据类型
            :param args: 
            :return:
            """
            if res_type == 't':
                cursor = self.conn.cursor()
            else:
                cursor = self.conn.cursor(DictCursor)
            try:
                cursor.execute(sql)
                return getattr(cursor, action)(*args)
            except Exception as e:
                raise e
            finally:
                cursor.close()
    
        def get_one(self, sql, res_type='t'):
            """
            获取一条数据
            :param sql:
            :param res_type: 返回数据的类型,默认为t表示以元组返回,'d'表示以字典的形式返回
            :return: 元组/字典
            """
            # 数据库若断开即重连
            self.reConnect()
            return self.__execute(sql, 'fetchone', res_type)
    
        def get_many(self, sql, size, res_type='t'):
            # 数据库若断开即重连
            self.reConnect()
            return self.__execute(sql, 'fetchmany', res_type, size)
    
        def get_all(self, sql, res_type='t'):
            # 数据库若断开即重连
            self.reConnect()
            return self.__execute(sql, 'fetchall', res_type)
    
        def exist(self, sql):
            if self.get_one(sql):
                return True
            else:
                return False
    
        def reConnect(self):
            """
            重连机制
            :@return
            """
            try:
                self.conn.ping()
            except:
                self.conn()
    
        def __del__(self):
            """
            对象销毁的时候自动会被调用
            :return:
            """
            self.conn.close()
    
    
    if __name__ == '__main__':
        db = {
            'engine': 'mysql',  # 指定mysql数据
            'host': '127.0.0.1',
            'user': 'admin',
            'password': '12345',
            'port': 3306,
            'db': 'mysql',
            'charset': 'utf8'
        }
        db = DoMysql(db)
        sql = 'select id, reg_name, mobile_phone from member limit 10'
        # res = db.get_one(sql)
        res = db.get_many(sql, size=5)
        print(res)

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看。

【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值