zoukankan      html  css  js  c++  java
  • 【python自动化框架搭建】requests模块封装和python处理数据库(第20天课堂笔记)

    import json
    
    import requests
    
    # 创建一个HandleRequest类
    class HandleRequest:
        """
        处理请求
        """
        # 创建一个构造方法,one_session自动保存会话信息
        def __init__(self):
            self.one_session = requests.Session()
    
        def add_headers(self,headers):
            """添加公共请求头"""
            self.one_session.headers.update(headers)
    
        # 添加send方法,专门用来发起请求,定义封装的参数三种形默认式
        # 默认请求方法:POST,默认参数格式:json格式
        def send(self,url,method="post",data=None,is_json=True,**kwargs):
            # data = '{"name"="hc","gender":true}'  # json格式的字符串
            # data = "{"name"="hc","gender":True}"  # 字典类型的字符串
            # isinstance用来判断第一个字符串类型的,如果是,返回True,不是返回false
            if isinstance(data,str):
                try:
                    # 对传递参数用json.loads进行格式转换,将JSON格式的参数转换为python中的字典格式或者嵌套字典的列表
                    data = json.loads(data)
                # 如果参数不是json格式的字符串,为字典格式执行以下代码
                except Exception as e:
                    print("使用日志器来记录日志")
                    # 使用eval格式进行转换,保证两种格式的数据,都能进行转换
                    data = eval(data)
            # 将所有请求方法转换为小写
            method = method.lower()
            if method == "get":
                # res = self.one_session.get(method,url,params=data,**kwargs)
                # params查询字符串参数
                res = self.one_session.request(method,url,params=data,**kwargs)
            elif method in ("post","put","delete","patch"): # 有请求体
                if is_json:         # 如果is_json为True,那么以json格式的形式来传参
                    # res = self.one_session.post(url,json=data,**kwargs)
                    res = self.one_session.request(method,url,json=data,**kwargs)
                else:               # 如果is_json为False,那么以www-form的形式来传参
                    # res = self.one_session.post(url, data=data, **kwargs)
                    res = self.one_session.request(method,url,data=data,**kwargs)
            else:
                res = None
                print("不支持【{}】请求方法".format(method))
            return res
    
        def close(self):
            self.one_session.close()
    
    
    if __name__ == "__main__":
        # 1、构造请求的url:登录
        login_url = "XXXXXXXXXXXXXXXX"
        # 2、充值
        recharge_url = "XXXXXXXXXXXXXX"
    
        # 2、创建请求参数
        headers = {
            "X-Lemonban-Media-Type": "XXXXXX",
            "User-Agent": "Moilla/5.0 leo"
        }
    
        login_params = {
            "mobile_phone": "13888888836",
            "pwd": "123456789"
        }
    
        # 3、执行登录
        do_request = HandleRequest()        # 创建HandRequest对象
        do_request.add_headers(headers)     # 添加公共请求头
    
        # 通过对象发起请求,获取response响应报文
        login_res = do_request.send(login_url,method="post",data=login_params,is_json=True)
        # 将response响应体的数据转换为字典,赋值给json_datas
        json_datas = login_res.json()
        # 取出响应报文的id值
        member_id = json_datas["data"]["id"]
        # 取出响应报文中的token
        token = json_datas["data"]["token_info"]["token"]
    
        # 4、创建请求参数,body值
        recharge_params = {
            "member_id": member_id,
            "amount":"50000",
        }
        # 字符串拼接需要传递的token参数
        token_header = {"Authorization": "Bearer " + token}
        # 请求头中添加token
        do_request.add_headers(token_header)
    
        # 5、执行充值
        recharge_res = do_request.send(recharge_url,data=recharge_params)
        pass

     安装:pymysql

    pip install pymysql

    pymysql调用数据库步骤

    import pymysql
    
    # 1、建立连接,db需要指定对哪一个数据库进行校验,conn:连接对象
    conn = pymysql.connect(host="XXXXXXXXXX",  # mysql服务器ip或者域名
                           user="XXXXXXXX",  # 用户名
                           password="123456",  # 密码
                           db="futureloan",  # 要连接的数据库名
                           port=3306,  # 数据库端口号默认3306
                           charset="utf8",  # 数据库编码为utf8
                           )
    # 2、创建游标对象
    cursor = conn.cursor()
    
    # 3、执行SQL语句
    sql_1 = "SELECT * FROM member WHERE mobile_phone = '13059298579';"
    
    # 使用游标对象执行sql语句
    cursor.execute(sql_1)
    
    # 一定要提交,使用连接对象
    conn.commit()
    
    # 4、获取执行的结果
    # 获取的是元祖
    print(cursor.fetchone())
    
    # 5、一定要关闭游标和连接
    # 先关闭游标,在关闭连接
    cursor.close()
    conn.close()
  • 相关阅读:
    功能规格说明书
    绝望的作业
    php闭包
    php isset emtpy
    PHP超级全局变量、魔术变量和魔术函数
    死锁的一个例子
    php session cookie
    http状态码301、302
    php浮点数
    学过的设计模式
  • 原文地址:https://www.cnblogs.com/python-test001/p/12537263.html
Copyright © 2011-2022 走看看