一、数据库校验
1. python操作数据库
1.pymysql
PyMSQL是一个纯的python的MySQL客户端。
pip install PyMySQL
使用步骤
- 创建连接(修高速公路)
- 创建游标(运输车)
- 执行sql(提货单)
- 获取结果(卸货)
- 关闭游标(车退掉)
- 关闭连接(路也断掉)
import pymysql
from pymysql.cursors import DictCursor
# 1.创建连接(修高速公路)
conn = pymysql.connect(
host='api.lemonban.com',
user='future',
password='123456',
port=3306,
db='futureloan',
charset='utf8'
)
# 2. 创建游标(运输车)
# cursor = conn.cursor() # 返回元组
cursor = conn.cursor(DictCursor) # 返回字典
# 3. 执行sql(提货单)
sql = 'select id, reg_name, mobile_phone from member limit 10'
res = cursor.execute(sql)
print(res)
# 4. 获取结果(卸货)
res1 = cursor.fetchone() # 一次卸载一条
res2 = cursor.fetchmany(3) # 一次卸载指定的条数
res3 = cursor.fetchall() # 一次获取所有
# 5. 关闭游标(车退掉)
cursor.close()
# 6. 关闭连接(路也断掉)
conn.close()
10
res1
{'id': 1, 'reg_name': '檬檬', 'mobile_phone': '13453457687'}
res2
[{'id': 2, 'reg_name': '青柠檬', 'mobile_phone': '13622120322'},
{'id': 3, 'reg_name': '小傻瓜', 'mobile_phone': '15500000000'},
{'id': 4, 'reg_name': '测试开发小可爱', 'mobile_phone': '15088314689'}]
res3
[{'id': 5, 'reg_name': '小傻瓜', 'mobile_phone': '13574660252'},
{'id': 6, 'reg_name': '小傻瓜', 'mobile_phone': '18717906533'},
{'id': 7, 'reg_name': '圆圆', 'mobile_phone': '18235075293'},
{'id': 8, 'reg_name': '小傻瓜', 'mobile_phone': '15209028515'},
{'id': 9, 'reg_name': '小傻瓜', 'mobile_phone': '13800001001'},
{'id': 10, 'reg_name': '小傻瓜', 'mobile_phone': '15100002222'}]
更新数据
import pymysql
db_config = {
'host': 'api.lemonban.com',
'user': 'future',
'password': '123456',
'port': 3306,
'db': 'futureloan',
'charset': 'utf8'
}
conn = pymysql.connect(**db_config)
try:
with conn.cursor() as cursor:
sql1 = 'UPDATE account set amount=amount - 100 where username="A"'
sql2 = 'UPDATE account set amount=amount + 100 where username="B"'
cursor.execute(sql1)
cursor.execute(sql2)
# pymysql默认开启事务
conn.commit()
except Exception as e:
# 回滚
conn.rollback()
finally:
conn.close()
2. 数据查询类封装
1. 功能分析
- 可以连接不同sql数据库
- 查一条数据,多条数据
- 可以获取不同格式的数据
2. 封装成数据库查询类
封装思路:
- 数据库查询模块有多个功能,且需要复用,所以封装成类
- 在构造方法中创建连接
- 创建对象方法实现各种查询
3. 应用到项目中
3.1 数据库配置
DB_CONFIG = {
'engine': 'mysql', # 指定mysql数据
'host': 'api.lemonban.com',
'user': 'future',
'password': '123456',
'port': 3306,
'db': 'futureloan',
'charset': 'utf8'
}
3.2 导入
在一个项目中会查询多次数据库,如果每次都要实例化一个数据库查询对象,也即是,每次都要重新连接,显然是比较浪费资源。当前这种场景下需要用到单例模式,也即是在一个脚本的生命周期内,某个类的实例始终只有一个。
因为python的模块就是填入的单例模式,所有的模块有且只会被导入一次。
3.3 修改用例数据
在用例中添加一个sql字段,里面编写需要校验的sql语句