背景
大家总会遇到一种情况。测试数据产品,当前没有数据或者数仓的数据没有同步过来。是不是纠结的很,如何高效的在mysql中生成测试数据,辅助测试尤其重要
pymysql相关知识
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
简单示例
def insert_system_notice():
#连接信息
notice_con = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="123456",
db="test_db"
)
notice_cur = notice_con.cursor()
sql = 'select id from sys_notice order by id desc limit 1'
#执行命令
notice_cur.execute(sql)
data_id = int(notice_cur.fetchall()[0][0])
for i in range(100):
data_id += 1
sql = '''
INSERT INTO `sys_notice`
(`id`, `in_id`, `user_id`, `type`, `read_status`, `content`, `create_time`, `update_time`)
VALUES
('{}', '1000006', '3162', '2', '1', '1000006/埃德加尔', '2021-04-26 17:31:34', '2021-04-26 17:34:04')
'''.format(data_id)
notice_cur.execute(sql)
#提交当前事务
notice_con.commit()
insert_system_notice()
单一简单插入mysql数据库
import pymysql
def insert_mall():
mall_con = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="123456",
db="test_db"
)
mall_cur = mall_con.cursor()
data_id = 473215
active_id = 600
for i in range(active_id, active_id+100):
sql = "INSERT INTO `test_db`.`t0310` (`ID`, `品名`, `规格`, `颜色`, `数量`) VALUES ('{}', 'aaa', 'a-1', '红色', '{}');".format(i,data_id)
print(sql)
mall_cur.execute(str(sql))
data_id += 1
mall_con.commit()
insert_mall()
效果图:
在测试初期,数据的准备工作迎刃而解。