什么是 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)

import pymysql

con = 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:获取查询到的数据中的第一条

import pymysql

con = 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)

​ 运行结果:

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的作用相当于数据库中的提交事务。

封装

​ 按需封装,想怎么封就怎么装。

import pymysql
from common.my_config import conf class 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语句查询到的所有数据"""
self.con.commit()
self.cur.execute(sql)
return self.cur.fetchall() def count(self, sql):
"""统计sql语句查询到的数据"""
self.con.commit()
res = self.cur.execute(sql)
return res def close(self):
self.cur.close() # 关闭游标对象
self.con.close() # 断开连接

【python接口自动化】- PyMySQL数据连接的更多相关文章

  1. python全栈开发day113-DBUtils(pymysql数据连接池)、Request管理上下文分析

    1.DBUtils(pymysql数据连接池) import pymysql from DBUtils.PooledDB import PooledDB POOL = PooledDB( creato ...

  2. 2020年第二期《python接口自动化+测试开发》课程,已开学!

    2020年第二期<python接口自动化+python测试开发>课程,12月15号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:12月15号-3月29 ...

  3. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...

  4. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  5. python接口自动化28-requests-html爬虫框架

    前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...

  6. python接口自动化20-requests获取响应时间(elapsed)与超时(timeout)

    前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的. 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于reques ...

  7. python接口自动化24-有token的接口项目使用unittest框架设计

    获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...

  8. python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  9. python接口自动化25-发xml格式post请求

    前言 post请求相对于get请求多一个body部分,body部分常见的数据类型有以下四种(注意是常见的,并不是只有4种) application/x-www-form-urlencoded appl ...

  10. python接口自动化23-token参数关联登录(登录拉勾网)

    前言 登录网站的时候,经常会遇到传token参数,token关联并不难,难的是找出服务器第一次返回token的值所在的位置,取出来后就可以动态关联了 登录拉勾网 1.先找到登录首页https://pa ...

随机推荐

  1. ctfhub技能树—信息泄露—备份文件下载—.DS_Store

    打开靶机 查看页面信息 使用dirsearch进行扫描 访问该网页,下载文件 使用Linux系统打开文件 发现一个特殊文件,使用浏览器打开 拿到flag 二.使用Python-dsstore工具查看该 ...

  2. List使用Stream流进行集合Collection的各种运算汇总:对BigDecimal求和,某个字段的和、最大值、最小值、平均值,字段去重,过滤等

    写Java接口的朋友都知道,Java 8的更新,经常会用到过滤 list<Object> 里的数据,本文就对List使用Stream流进行集合Collection的各种运算做一个汇总! 优 ...

  3. 记一次使用logmnr查找操作人流程

    经常遇到开发的需求,帮我查一下是谁修改了表里面的记录,是谁对表进行了DDL操作,此类问题可以使用logmnr解决 1.根据操作时间定位归档日志 SELECT name FROM V$ARCHIVED_ ...

  4. MySQL数据库基础知识及优化

    MySQL数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...

  5. ElasticSearch极简入门总结

    一,目录 安装es 项目添加maven依赖 es客户端组件注入到spring容器中 es与mysql表结构对比 索引的删除创建 文档的crud es能快速搜索的核心-倒排索引 基于倒排索引的精确搜索. ...

  6. vue首次加载白屏过渡动画(vue优化)

    过渡动画需要在index.html文件里面添加 1.css,在public.index.css创建index.css html, body, #app { height: 100%; margin: ...

  7. eNSP启动设备AR1失败记一次解决步骤

    eNSP稳定版本下载:   微信搜索公众号"疯刘小三" 关注后回复ensp即可获得下载链接地址 eNSP V100R002C00B510 Setup.exe 最近在用eNSp的时候 ...

  8. Spring框架入门浅析

    一.Spring Bean的配置 在需要被Spring框架创建对象的实体类的类声明前面加注解:```@component```.这样在Spring扫描的时候,看到该注解就会在容器中创建该实体类的对象. ...

  9. Why should I avoid blocking the Event Loop and the Worker Pool?

    Don't Block the Event Loop (or the Worker Pool) | Node.js https://nodejs.org/en/docs/guides/dont-blo ...

  10. 在VMware15安装Ubuntu 16.04

    安装环境: VMware15 VMware15官网地址:https://my.vmware.com/cn/web/vmware/info/slug/desktop_end_user_computing ...