从接口自动化测试框架设计到开发(八)--python操作数据库

1.连接数据库查询数据

安装mysql驱动,导入模块不报错就行

pip install -i https://pypi.douban.com/simple/ mysqlclient

# -*- coding: utf-8 -*-
# @Author: jiujiu
# @Date:   2020-03-12 14:39:11
# @Last Modified time: 2020-03-12 14:51:48
import MySQLdb
conn = MySQLdb.connect(
        host='10.2.40.217',
        port=3306,
        user='root',
        passwd='123456',
        db='zc-car-info-manage',
        charset='utf8'
        )
cur = conn.cursor()  #创建一个游标对象
cur.execute("select * from t_sys_user ")   #执行SQL语句,注意这里不返回结果,只是执行而已
print(cur.fetchall())#fetchall方法返回所有匹配的元组,给出一个大元组(每个元素还是一个元组);fetchone()只给出一条数据

执行结果

2.获取数据库数据重构及数据转换

# -*- coding: utf-8 -*-
# @Author: jiujiu
# @Date:   2020-03-12 14:39:11
# @Last Modified time: 2020-03-12 15:26:35
import MySQLdb.cursors
import json
class operation_db:
    """docstring for operation_db"""
    def __init__(self):
        self.conn = MySQLdb.connect(
            host='10.2.40.217',
            port=3306,
            user='root',
            passwd='123456',
            db='zc-car-info-manage',
            charset='utf8',
            cursorclass=MySQLdb.cursors.DictCursor        #把表的列名显示出来
            )
        self.cur = self.conn.cursor()  #创建一个游标对象
    #查询一条数据
    def search_one(self,sql):
        self.cur.execute(sql)   #执行SQL语句,注意这里不返回结果,只是执行而已
        result = self.cur.fetchone()#fetchall方法返回所有匹配的元组,给出一个大元组(每个元素还是一个元组);fetchone()只给出一条数据
        result = json.dumps(result)#以json格式展示
        print(result)
        return result
if __name__ == '__main__':
    op_mysql = operation_db()
    res = op_mysql.search_one("select * from t_sys_user")
    print(type(res))#输出返回值的类型,是字符串格式

运行结果:

3.返回数据和数据库数据进行对比

        #通过sql获取预期结果
    def get_expect_data_for_mysql(self,row):
        op_mysql = operation_db()
        sql = self.get_expect_data(row)
        res = op_mysql.search_one(sql)
        return res.decode('unicode-escape')
def is_equal_dict(self,dict_one,dict_two):
    ''' 判断2个字典'''
    if isinstance(dict_one,str):
        dict_one = json.loads(dict_one)
    if isinstance(dict_two,str):
        dict_two = json.loads(dict_two)
    return cmp(dict_one,dict_two)
    if self.com_util.is_equal_dict(expect,res) == 0:#判断,需去掉结果的格式化
                    self.data.write_result(i,'pass')
                    pass_count.append(i)
                else:
                    self.data.write_result(i,res)
                    fail_count.append(i)
原文地址:https://www.cnblogs.com/dydxw/p/12469972.html