pymysql使用和充值接口数据库校验

这篇博客详细介绍了如何使用Python的pymysql模块连接并操作MySQL数据库,包括建立连接、创建游标、执行SQL、提交事务等步骤。同时展示了如何通过上下文管理器简化操作,并封装成数据库操作类。此外,还提到了在接口充值操作中如何利用数据库断言验证余额变化。
摘要由CSDN通过智能技术生成

①连接数据库

con = pymysql.connect(host='api.ggg.com',
                      port=3306,
                      user='future',
                      password='123456',
                      charset='utf-8',
                      # 执行sql返回数据已字典格式返回,默认是元组
                      cursorclass=pymysql.cursors.DictCursor)

②创建一个游标对象

cur = con.cursor()

③执行sql

sql = 'select * from student'
res = cur.execute(sql)

④提交事务(如果涉及增删改查操作的sql,执行完一定要提交事务才会生效)

con.commit()

⑤创建一个游标对象(自动提交事务)可以代替②③④

with con as cur:
    sql = 'select * from student'
    cur.excute(sql)

with启动对象,上下文管理器的关键字
上下文管理器协议:如果一个类中定义了如下两个方法那么该类就实现了上下文管理器协议(可以通过with进行操作)
enter:with xxx as 后面的变量接受的是该方法返回值
exit:with中代码执行完毕之后汇之星该方法

⑥获取查询结果

# 获取第一条数据
cur.fetchone()
# 获取所有数据
cur.fetchall()

封装Pymysql

import pymysql
from common.handle_conf import conf

class HandleDB:
    def __init__(self):
        self.con = pymysql.connect(host=conf.get('mysql', 'host'),
                              port=conf.getint('mysql', 'host'),
                              user=conf.get('mysql', 'user'),
                              password=conf.get('mysql', 'password'),
                              charset='utf-8',
                              # 执行sql返回数据已字典格式返回,默认是元组
                              cursorclass=pymysql.cursors.DictCursor)

    def find_all(self, sql):
        # 查询所有数据
        with self.con as cur:
            cur.excute(sql)
        res = cur.fetchall()
        cur.close()
        return res
    
    def find_one(self,sql):
        # 查询一条数据
        with self.con as cur:
            cur.excute(sql)
        res = cur.fetchone()
        cur.close()
        return res
    
    def find_count(self, sql):
        # sql执行完之后,返回的数据条数
        with self.con as cur:
            res = cur.excute(sql)
        cur.close()
        return res
    
    # 自动销毁
    def __del__(self):
        self.con.close()

充值接口加入数据库断言:

①执行sql查询余额(接口请求之前)

start_amount = self.db.find_one(sql)[0]
print("执行之前,用户余额:",start_amount)

②接口请求

response = requests.request(method=method, url=url, json=params, headers=headers)

③执行完sql之后

end_amount = self.db.find_one(sql)[0]
print("执行之后,用户余额:",end_amount)

④断言:

try:
    self.assertEqual(expected['code'], res['code'])
    self.assertEqual(expected['msg'], res['msg'])
    if res['msg'] == 'OK':
        # 充值冲程,余额变化为充值余额
        self.assertEqual(float(end_amount), params['amount'])
    else:
        # 充值失败,用户余额变化为0
        self.assertEqual(float(end_amount), 0)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值