自动化测试中,经常需要向数据库添加或删除数据,也需要验证测试数据和数据库的数据是否一致。这个时候就需要用Python连接Mysql

安装PyMySQL

pip install PyMySQL

连接MySql

import pymysql

打开数据库连接

db = pymysql.connect("localhost", "root", "111223", "study_date")

使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor()

使用 execute() 方法执行 SQL 查询

cursor.execute("SELECT VERSION()")

使用 fetchone() 方法获取单条数据.

data = cursor.fetchone()

print("Database version : %s " % data)

关闭数据库连接

db.close()

数据库基本操作

增加数据

insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:

insert into 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

import pymysql

打开数据库连接

db = pymysql.connect("localhost", "root", "111223", "study_date")

使用cursor()方法获取操作游标,以字典的方式获取数据,原数据类型为元组

cursor = db.cursor(cursor=pymysql.cursors.DictCursor)

insert_sql = "insert into studys(id, name, age) values(3, '骑着乌龟赶猪', 35)"

执行sql语句

cursor.execute(insert_sql)

提交到数据库执行

db.commit()

关闭数据库连接

db.close()

删除数据

delete 语句用于删除表中的数据

delete from 表名称 where 删除条件;

import pymysql

打开数据库连接

db = pymysql.connect("localhost", "root", "111223", "study_date")

使用cursor()方法获取操作游标,以字典的方式获取数据,原数据类型为元组

cursor = db.cursor(cursor=pymysql.cursors.DictCursor)

SQL 删除数据

del_sql = "delete from studys where id=3"

执行sql语句

cursor.execute(del_sql)

提交到数据库执行

db.commit()

关闭数据库连接

db.close()

修改数据

update 语句可用来修改表中的数据

update 表名称 set 列名称=新值 where 更新条件;

update studys set age=25 where id=1

import pymysql

打开数据库连接

db = pymysql.connect("localhost", "root", "111223", "study_date")

使用cursor()方法获取操作游标,以字典的方式获取数据,原数据类型为元组

cursor = db.cursor(cursor=pymysql.cursors.DictCursor)

SQL 修改数据

updata_sql = "update studys set age=30 where id=2"

执行sql语句

cursor.execute(updata_sql)

提交到数据库执行

db.commit()

关闭数据库连接

db.close()

查询数据

语法:

fetchone()获取一行数据

fetchone()获多行数据

导入模块

import pymysql

打开数据库连接 数据库地址

db = pymysql.connect("localhost", "root", "111223", "study_date")

使用cursor()方法获取操作游标,以字典的方式获取数据,原数据类型为元组

cursor = db.cursor(cursor=pymysql.cursors.DictCursor)

使用 execute()方法执行 SQL 查询

cursor.execute("select * from studys")

使用 fetchone() 方法获取一行数据.

data = cursor.fetchone()

print(data)

关闭数据库连接

db.close()

电商项目实战--判断主界面商品分类是否与数据库一致

第1步:获取界面分类数据

#! /usr/bin/python3

-- coding:utf-8 --

@FileName: day10.py

@Time : 2020/8/21 9:26

from selenium import webdriver

url = "http://localhost:8080/Shopping/index.jsp"

driver = webdriver.Chrome()

driver.get(url)

复数形式定位定位

els = driver.find_elements_by_xpath("/html/body/table[5]/tbody/tr/td[2]/table[1]/tbody/tr/td/a")

空列表用于存放数据

list = [ ]

for i in els:

# 获取text文本然后添加到列表

list.append(i.text)

print("界面数据:", list)

第2步:获取数据库商品分类数据

db = pymysql.connect(host="localhost", user="root", password="111223", database="db_shopping")

cur = db.cursor(cursor=pymysql.cursors.DictCursor)

从tb_bigtype数据库中选择bigName列表

sql = "select bigName from tb_bigtype"

cur.execute(sql)

db.commit()

cur.execute(sql)

data = cur.fetchall()

db_list = []

print("数据库数据:",data)

for i in data:

for j in i.values():

db_list.append(j)

print(db_list)

第3步:两组数据进行断言

反向排序列表list.reverse()if db_list == list: print("一致")else: print("不一致")

练习

1.将电商实战代码封装后再进行断言

2.将数据库的操作封装在一个类中,并且把连接数据库、增、删、改、查的操作封装为方法