在我们做自动化测试工作中,肯定会用到查询数据库验证数据库的操作;
本篇主要写的就是封装好的针对数据库的基本操作,如果工作中遇到造数据也可以直接调用;
代码:
# project :Python_Script
# -*- coding = UTF-8 -*-
# Autohr :XingHeYang
# File :operation_mysql_database.py
# time :2019/11/5 10:24
# Describe :封装对mysql数据库的基本操作
# ---------------------------------------
import pymysql
class Operation_Mysql():
def __init__(self,host,user,password,db,charset='utf8'):
'''
初始化连接mysql的操作
:param host: 传入mysql主机地址
:param user: 传入连接mysql用户名
:param password: 传入连接密码
:param db: 指定数据库名
:param charset: 字符编码格式 默认utf8编码
'''
self.connect = pymysql.connect( # 连接mysql
host = host,
user = user,
password = password,
db = db,
charset = charset,
)
def __execute_sql(self,sql):
'''
该方法是一个私有方法,主要用于执行sql语句
:param sql: 传入要执行的sql语句
:return: 如果是查询语句,将会返回查询的结果值。
:return_type:返回tuple类型
'''
try:
with self.connect.cursor() as cursor: # 通过游标对象获取容器
cursor.execute(sql) # 通过游标对象执行sql语句
data = cursor.fetchall() # 获取执行sql后的返回数据,插入数据和创建表是没有返回数据的,结果为空元组
self.connect.commit() # 通过连接对象将对数据库的操作进行提交
return data # 返回查询后的数据
finally:
self.connect.close() # 关闭连接对象
def insert_data(self,table,*args):
'''
封装的插入数据的方法
:param table: 传入要插入数据的表名
:param args: 传入插入的数据值,传入类型是元组
'''
sql = "insert into %s values %s" % (table, tuple(*args))
self.__execute_sql(sql) # 调用私有方法,执行sql语句
def create_table(self,tbale,table_type):
'''
封装创建表的方法
:param tbale: 传入要创建的表名
:param table_type: 传入要创建表的字段 数据类型和表约束;传入一个字符串的类型
'''
sql = "create table %s(%s)"%(tbale,table_type)
self.__execute_sql(sql) # 调用私有方法,执行sql语句
def select_data(self,sql):
'''
封装的查询语句的方法
:param sql: 因查询的方式太多,所以直接传入sql语句进行查询
:return: 返回查询后的结果数据
'''
data = self.__execute_sql(sql)
return data
def execute_sql(self,sql):
'''
公有的执行sql语句方法;主要用于修改数据和删除数据
:param sql: 传入需要执行的sql语句
'''
self.__execute_sql(sql)
if __name__ == '__main__':
# 创建操作数据库对象
operation = Operation_Mysql('localhost','root','123456','hrdb')
# 创建表
type = 'name varchar(20),age int,sex char(10)'
operation.create_table('userInfo',type)
# 插入数据
tuple1 = ['zhangsan', 18, 'man']
operation.insert_data('userInfo',tuple1)
# 查询数据,并输出
sql = 'select * from userInfo'
print(operation.select_data(sql))
# 删除数据
sql = "delete from userInfo"
operation.execute_sql(sql)