前言
今天筆者想和大家來聊聊Python/ target=_blank class=infotextkey>Python接口自動化的MySQL數據連接,廢話不多說咱們直接進入主題吧。
一、什么是 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:softwarepythonpython.exe D:/learn/test.py
(('13688703234',), ('15600403234',), ('15688113234',), ('13504071234',))
('13688703234',)
('15600403234',)
('15688113234',)
('13504071234',)
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語句查詢到的所有數據"""
pass
def count(self, sql):
"""統計sql語句查詢到的數據"""
pass
def close(self):
self.cur.close() # 關閉游標對象
self.con.close() # 斷開連接
總結
今天的文章就到這里了喲,喜歡的小伙伴可以點贊收藏評論加關注喲,筆者每天都會分享不同的知識點喲,偶爾還會有一些小福利和小驚喜喲。