如何封装Python 操作MySQL 让自动化测试更轻松

2390 篇文章 33 订阅
1301 篇文章 7 订阅

在这里插入图片描述

数据查询类封装

1.功能分析

可以连接不同sql数据库

查一条数据,多条数据

可以获取不同格式的数据

2.封装成数据库查询类

封装思路:

数据库查询模块有多个功能,且需要复用,所以封装成类

在构造方法中创建连接

创建对象方法实现各种查询

废话不多说,直接上代码!!!

# -*- 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)

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保100%免费】
在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值