🔥 交流讨论:欢迎加入我们一起学习!
🔥 资源分享:耗时200+小时精选的「软件测试」资料包
🔥 教程推荐:火遍全网的《软件测试》教程
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
前言
什么是 PyMySQL?
PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb。它是一个遵循 Python数据库APIv2.0规范,并包含了pure-Python MySQL客户端的库。
为什么需要连接数据库?
在接口测试过程中,常常会有增删改查的操作,但是单从接口返回不能确保数据是否真的按照我们期望的结果来走,这时就需要查询数据库来核对,如注册接口,需要查询账号是否新建成功;接口修改数据,数据库的数据是否被更新到最新等等。
安装
cmd命令行执行pip install pymysql
操作数据库
连接数据库之前,要先确保数据库已经建立。操作数据库的步骤可以简单分为三步:
1. 连接数据库pymysql.connect(host, user, password, port, charset)
2. 创建游标对象cursor()
3. 执行sqlexecute(sql)
python
import pymysqlcon = pymysql.connect(host="192.168.100.101", # 连接数据库user="test",password="123456",port=3306,charset="utf8") cur = con.cursor() # 创建游标 sql = "SELECT * FROM member WHERE username ='test'" res = cur.execute(sql) # 执行sql
上面中提到一个概念:游标,实际上就是一种能从包括多条数据记录的结果集中每次提取一条记录的机制,就等于光标的上下移动,尽管游标能遍历结果中的所有行,但它一次只指向一行。游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作,就像电脑的鼠标一样。
提取查询结果
🎈 fetchall:返回的是一个查询集(元祖的形式,查询到的每一条数据为这个元祖中的一个元素)
🎈 fatchone:获取查询到的数据中的第一条
python
import pymysqlcon = pymysql.connect(host="127.0.0.1",user="test",password="123456",port=3306,charset="utf8") cur = con.cursor() # 创建游标 sql = "SELECT mobile_phone FROM futureloan.member limit 4" res = cur.execute(sql) datas = cur.fetchall() print(datas) for i in datas:print(i)
运行结果:
shell
C:\software\python\python.exe D:/learn/test.py (('13678703234',), ('15690403234',), ('15680113234',), ('13503071234',)) ('13678703234',) ('15690403234',) ('15680113234',) ('13503071234',)Process finished with exit code 0
🚩特别注意:
执行完增删改的sql语句之后,需要进行commit
提交确认,这里commit
的作用相当于数据库中的提交事务。
封装
凡是需要重复使用的,我们都可以对它进行二次封装,写成我们自己的版本,还可以在封装过程中加入我们想要的内容,使用的时候直接调用即可。
python
import pymysql from common.my_config import confclass HandleDB:def __init__(self):# 读取配置文件的数据库信息self.con = pymysql.connect(host=conf.get_str("mysql", "host"),user=conf.get_str("mysql", "user"),password=conf.get_str("mysql", "password"),port=conf.get_int("mysql", "port"),charset="utf8")self.cur = self.con.cursor()def get_one(self, sql):"""获取查询到的第一条数据"""self.con.commit()self.cur.execute(sql)return self.cur.fetchone()def get_all(self, sql):"""获取sql语句查询到的所有数据"""passdef count(self, sql):"""统计sql语句查询到的数据"""passdef close(self):self.cur.close() # 关闭游标对象self.con.close() # 断开连接
最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!