使用PyMysql进行操作数据库(企业中也用于测试数据库)

背景:
1,无论是功能测试还是性能测试的造数据,如果逻辑简单可以使用存储过程进行造数据,如果业务复杂可以使用接口进行造数据,但是如果逻辑不是很简单也不是很复杂,那么你该选择哪个呢?别担心,还有第三种选择方式,那就是使用python连接操作,可适用于逻辑结构一般的业务。
2,前端的测试可能只需要去一张表里面查看落库是否正常就可以,但是服务端的测试,就有很多的清表操作,数据同步,数据复制,其中要测的数据小则几百行,多则几万行,而且每张表都有几十上百个字段,使用人眼进行对数据,显然不现实,一般我们都使用代码测,测得正确,测得全,且节省了人力。
目的:
使用python+pymysql帮助我们进行功能/性能造数和对后端服务进行数据测试做前置准备。

前提条件
 

安装yaml:  pip install pyyaml
安装pyMysql:  pip install PyMySQL


1,设置yaml
 

 yaml的语法是key: value这种键值对的形式,Map(属性和值),注:冒号后面要加空格
第一种语法:
换行表示对象的属性
user:
        username: 江云
        userSex: 男
第二种语法:
使用-代表数组,--代表数组里面的数组
users:
        -user1
                --阿江
                --小江
        -user2
第三种语法
users: [suer1,user2,user3]

以下为第一种

 代码如下

mysql1:
  host: 127.0.0.1
  port: 3306
  user: admin
  password: admin
  database: database
  charset: 'utf8'

mysql2:
  host: 127.0.0.1
  port: 3306
  user: admin1
  password: admin1
  database: database
  charset: 'utf8'


2,连接mysql

 ①使用with open打开yaml的mysql配置或者自己封装的打开方式
 ②把yaml上的配置赋值给设置的属性,分别有host地址,账户密码,端口(对于端口号,默认的是3306,但是企业的所有mysql端口都会进行修改,不然容易端口冲突),具体的库(如果设置了哪个库就只能查哪个库),还有编码格式。

具体代码如下 

from RequestUnittestDDT.util import operat_config

def getMysql():
    #read_yaml_all为自定义方法,可直接使用with open打开文件
    cfg = operat_config.read_yaml_all('config/mysql.yaml')
    mysql_host = cfg["mysql1"]["host"]
    mysql_user = cfg["mysql1"]["user"]
    mysql_password = cfg["mysql1"]["password"]
    mysql_port = cfg["mysql1"]["port"]
    mysql_db = cfg["mysql1"]["database"]
    mysql_charset = cfg["mysql1"]["charset"]
    mysql = pymysql.connect(host=mysql_host,
                                 user=mysql_user,
                                 password=mysql_password,
                                 port=mysql_port,
                                 db=mysql_db,
                                 charset=mysql_charset)
    return mysql
if __name__ == '__main__':
    getMysql()


3,进行sql操作(增删改查)
 

要执行sql,首先需要获取能连接的数据库和获取游标,游标用于操作sql

增删改需要进行commit提交事务,如果失败了则需要事件回滚,保证事务的完整性和一致性,
有报错也会抛出去,最后关闭游标关闭数据库连接         

from RequestUnittestDDT.mysql.connect_mysql import getMysql


class OperatMysql():
    def __init__(self):
        self.mysql = getMysql()
        self.cursor = self.mysql.cursor()
    '''此方法用于查询数据库'''
    def query_all(self,sql):
        try:
            self.cursor.execute(sql)
            mysql_data = self.cursor.fetchall()
            print('查询成功')
            return mysql_data
        except Exception as e:
            print("查询失败,失败原因为:", e)
        finally:

            self.cursor.close()
            self.mysql.close()
    '''此方法为更新表内容'''
    def update(self,sql):
        try:
            self.cursor.execute(sql)
        except Exception as e:
            print("更新表失败,失败原因为:", e)
            self.mysql.rollback()
            print("内容已回滚")
        else:
            self.mysql.commit()
        finally:

            self.cursor.close()
            self.mysql.close()
    '''往数据库表插入内容'''
    def insert(self,sql):
        try:
            self.cursor.execute(sql)
        except Exception as e:
            print("插入表失败,失败原因为:", e)
            self.mysql.rollback()
            print("内容已回滚")
        else:
            self.mysql.commit()
            print('操作成功')
        finally:

            self.cursor.close()
            self.mysql.close()
    '''删除表内容的操作'''
    def delete(self,sql):
        try:
            self.cursor.execute(sql)
        except Exception as e:
            print("删除操作失败,失败原因为", e)
        else:
            self.mysql.commit()
            print("操作成功")
        finally:

            self.cursor.close()
            self.mysql.close()

Python连接数据库篇结束,欢迎观看我主页上别的篇章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值