如何使用python连接mysql数据库 ?编写自动化测试进行连接数据库你离不开它。

1.常用数据库模块

在做自动化测试时,我们经常会查库的需求 ,那么该如何使用python去查找数据库呢 ? 这里介绍一个python的第三方包PyMySQL . 通过它使用python语言可以连接mysql数据库 。

以下为安装和验证 :

  1. #安装: pip install pymysql

  2. #验证: pip show pymysql

2.数据库操作流程

首先我们可以通过查看客户端工具连接数据库的流程 :

如果使用pymysql进行连接数据库的流程具体如下:

  1. 导包
  2. 创建数据库连接
  3. 获取游标对象
  4. 执行操作
  5. 关闭游标对象
  6. 关闭数据库连接

将工具和pymysql的连接流程放在一起做个比对,将会是如下:

3.使用pymysql操作
3.1 建立连接

如果想使用pymysql操作数据库 ,你就需要调用pymysql中的connect()方法建立连接 。


# 建立连接对象

conn = pymysql.connect(host=None,user=None,password="",database=None,port=0,charset="")

​

# 参数说明:

host :数据库服务器地址

user :登录用户名

password : 密码

database : 数据库名称

port : 数据库连接端口,默认为3306时刻不填写。

charset : 数据库编码,一般设置为utf8

案例 :使用pymysql进行建立连接数据库 ,连接school数据库

conn = pymysql.connect(host="localhost",user="root",password="root",database="school",charset='utf8')
3.2常用方法

常用的操作数据库方法:

  • cursor() : 获取游标对象
  • close() : 关闭对象
  • execute(sql) : 执行SQL语句 ,sql参数为需要传入的SQL语句。
  • fetchone() : 查询一条数据返回,从指针的下一条开始查一条数据。 。
  • fetchmany(num) : 查询num条数据返回
  • fetchall() : 获取全部的返回行
  • rowcount : 获取execute()方法执行后影响的行数

将以上的方法和操作步骤进行对应

 

3.3项目案例

对数据库表数据进行查询


"""

连接数据库的流程 :

1. 导包 :import pymysql

2. 建立连接 : connect(host,user,password,port,database,chaset)

3. 创建游标 : cursor()

4. 执行SQL语句

(1) 执行SQL :execute(sql)

(2) 查询一条数据 : fetchone()

(3) 查询多条数据 : fetchmany(number) , number代表的是传入多条数据

(4) 查询所有数据 : fetchall()

5. 关闭游标 : close()

6. 关闭连接 : close()

"""

​

# 1. 导包

import pymysql

​

# 2. 建立连接对象

connect = pymysql.connect(host='localhost',user='root',password='root',database='school',charset='utf8')

​

print(connect)

​

# 3. 创建游标

cursor = connect.cursor()

​

# 4. 执行SQL语句

sql = "select * from students"

res = cursor.execute(sql)

print(res)

​

# 需求1 :查询所有的数据

# all_data = cursor.fetchall()

# print(all_data) , 查询结果返回一个元组,每一条数据也是一个元组

​

# 需求2 : 查询一条数据

# one_data = cursor.fetchone()

# print(one_data) ,返回的这条数据为元组

​

# 需求3 : 查询5条数据

five_data = cursor.fetchmany(5)

print(five_data) # 查询结果返回一个元组,每一条数据也是一个元组

​

# 5. 关闭游标

cursor.close()

​

# 6. 关闭连接对象

connect.close()

​

# 总结 :以上的三个查询方法,若只返回一条数据 ,这一条数据就在一个元组中。若返回多条数据 ,每一条数据是构成一个元组 ,然后多条数据又放在一个大的元组中。

对数据库表数据进行增删改


​

# 1. 导包

import pymysql

​

# 2. 建立连接对象

connect = pymysql.connect(host='localhost',user='root',password='root',database='school',charset='utf8')

​

print(connect)

​

# 3. 创建游标

cursor = connect.cursor()

​

# 4. 执行SQL语句

#需求1 :数据的修改

# sql = "update students set age = 54 where name = '王伟'"

# res = cursor.execute(sql)

# print(res)

​

# 需求2数据的插入

# sql = "insert into students values(27,'李四',19,'男','2班',345678943,'天津')"

# res = cursor.execute(sql)

# print(res)

​

# 需求3 :数据的删除

sql = "delete from students where name = '李四'"

res = cursor.execute(sql)

print(res)

​

​

# 5. 关闭游标

cursor.close()

​

# 6. 关闭连接对象

connect.close()

​

# 总结 : 使用cursor.execute()方法就可以进行增删改,只需要将SQL语句传入该方法中即可。

4.数据库封装

这里的数据库封装其实就是将项目的数据库连接对象封装进来,大家不需要每次进行初始化连接,而是执行调用一个方法就可以执行相应的SQL语句即可 。

当然数据库封装应该是最灵活的一种情况 ,10个人有10个人的封装法 ,这里只给出一种最基本的封装方式 。具体如下 :


​

# 数据库类

import pymysql

from setting import DB_INFO

from loguru import logger

​

​

class MysqlClient(object):

​

# 初始化方法,建立连接

def __init__(self):

self.conn = pymysql.connect(**DB_INFO) # 初始化数据库连接

​

# 执行SQL语句的增删改

def execute(self,sql):

try:

with self.conn.cursor() as cursor:

cursor.execute(sql)

self.conn.commit()

logger.info("执行的SQL语句:{}".format(sql))

except Exception as e:

logger.error("执行SQL错误,报错原因{},执行SQL:{}".format(e,sql))

self.conn.rollback()

​

​

# 执行查询

def get_data(self,sql):

try:

with self.conn.cursor() as cursor:

cursor.execute(sql)

result = cursor.fetchall()

logger.info("执行的SQL语句:{}".format(sql))

return result

except Exception as e:

logger.error("执行SQL错误:{},执行SQL:{}".format(e, sql))



# 关闭对象

def close(self):

self.conn.close()

​

5.项目集成

在项目中添加一个mysql的包名,在此包中除了编写封装数据库连接的代码,主要就是编写各模块需要执行的SQL语句。 具体如下 :

  1. 在创建项目框架时,创建mysql包名 。然后此包下创建一个连接数据库的模块 。 比如:mysql_client.py
  2. 在mysql包下可以创建项目中所需要的SQL语句模块 ,比如user_sql.py
  3. 在测试用例中调用响应的SQL语句 。
5.1 创建连接数据和所需执行的SQL语句模块

5.2 在测试用例中调用对应模块

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值