pymysql 库
字典游标刚好对应单参数的pytest的参数化!
pymysql速度相对快,更容易进行自动化
对象名 | 对象API |
pymysql | 1 创建db连接 connect 2 创建游标cursor 默认元组游标,字典游标更好用 [{data1},{data2},{data3}]游标里面是一个个的字典 pymysql.cursor.DictCursor 2.1 执行sql语句 2.2 保存select语句结果 3 从游标上提取select结果 3.1 fetchone() 提取一行 3.2 fetchmany(n)提取n行 3.3 fetchall()提取所有数据 4更新类sql(增删改) 4.1 commit()提交 4.2 rollback()回滚 5 close() 先关游标再关数据库 |
使用:
#
# 1创建db连接
# connect
import pymysql
# 本地机器
jwdb=pymysql.connect(host="127.0.0.1",port=3306,
user="root",password="123456",database="jwtest1",
charset="utf8")
# 2 创建游标cursor() ?
jwcursor=jwdb.cursor(pymysql.cursors.DictCursor) # 字典游标方便 pytest的 ddt 对接~
# 2.1 执行SQL语句
sql="select * from xsb;"
jwcursor.execute(sql)
# 2.2 保存 select 语句的结果
# print(jwcursor.fetchone())
# print(jwcursor.fetchmany(2))
# print(jwcursor.fetchone())
# print(jwcursor.fetchall())
# print(jwcursor.fetchone())
all_data=jwcursor.fetchall() #元组数据~
# 取出班级?--->
# 元组游标缺点 1 数数麻烦 2 记录长度变化的 3 可读性差
print(all_data)
print(all_data[2]['bj'])
print(all_data[2])
# print(all_data[0])
# 3 从游标 提取select 结果
# 3.1 fetchone() 提取一行数据
# 3.2 fetchmany(n) 提取 n行数据
# 3.3 fetchall() 提取所有数据
# 5 close()
# 先关闭游标 再关数据库
jwcursor.close()
jwdb.close()
更新类sql的使用
思路:
1fetchXXXAPI 不需要
2 commit() 保存API
#
# 1创建db连接
# connect
import pymysql
# 本地机器
jwdb=pymysql.connect(host="127.0.0.1",port=3306,
user="root",password="123456",database="jwtest1",
charset="utf8")
# 2 创建游标cursor() ?
jwcursor=jwdb.cursor(pymysql.cursors.DictCursor) # 字典游标
# 2.1 执行SQL语句
sql="insert into xsb set xh='012',xm='奥特曼',xb='男';"
jwcursor.execute(sql)# 游标执行sql
jwdb.commit() # 数据库保存
jwcursor.close()
jwdb.close()
try语句管理MySQL的事务
#
# 1创建db连接
# connect
import pymysql
# 本地机器
jwdb=pymysql.connect(host="127.0.0.1",port=3306,
user="root",password="123456",database="jwtest1",
charset="utf8")
# 2 创建游标cursor() ?
jwcursor=jwdb.cursor(pymysql.cursors.DictCursor) # 字典游标
# 2.1 执行SQL语句
try:
sql1="insert into xsb set xh='102',xm='杨过',xb='男';"
jwcursor.execute(sql1)# 游标执行sql
sql2="insert into xsb set xh='103',xm='小龙女',xb='女';"
jwcursor.execute(sql2)# 游标执行sql
jwdb.commit() # 数据库保存
except:
print("有sql失败,开始回滚。。")
jwdb.rollback()
else:
print("全部sql执行成功")
finally:
print("事务结束~")
jwcursor.close()
jwdb.close()
字符串的切割、查询、类型替换、类型转换
# 1字符串切割---》列表~
import re
from string import Template
jwstr="zhangsan=lisi=wangwu"
jwlist=jwstr.split("=")
print(jwlist)
print(jwlist[1])
# 2 字符串查询查找 提取目标数据~
jwstr2="上游接口授权${aaaaaaa},我爱${大s},我爱${志玲},我爱${一博} ,我爱${社会主义}"
# 正则表达式 (.*?) 0~多个字符
# 根据目标数据的左右边界策略 提取数据呀~
# 左边界 ${ 右边界}
zhengze="\\${(.*?)}" #python \\ 代表正则表达式~
# Python re库 findall api 专门是根据正则从数据中完成查找 存放到列表~
list=re.findall(zhengze,jwstr2)
print(list)
# 3字符串类型替换
# 被替换数据 要求必须字符串 包含 ${}
# 替换数据 要求 必须是字典 ${} 和字典键必须一致~
jwstr3="我是下游接口用例 需要授权码${jwtoken}"
# 运行了接口
shangyou_jieguo={"jwtoken":"aaaaaaaaaa"}
#需要将 授权码aaaa 替换到 字符串中下游接口才可以运行~
# Python 模板字符串 Template(字符串)==》支持替换
# safe_substitute ==>发生替换
genghuan=Template(jwstr3)
new_shiji=genghuan.safe_substitute(shangyou_jieguo)
print(new_shiji)
# 4 字符串类型转换
#API
# 字符串 --json.loads() eval()---》字典
data="{'username':'admin','password':'123'}"
print(type(data)) # 为什么转字典? 答:键值对取值 +才能交给requests发送
print(data)
data2=eval(data)
print(data2)
print(type(data2),data2['username'])
# 字典 --json.dumps() str()--》字符串
发表回复