在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据。如果一条条的插入数据库或者一条条的创建数据,效率未免有点低。
如何快速的造大量的测试数据呢?
在不熟悉存储过程的情况下,今天给大家介绍一种方法,很简单的也很实用。思路是用python代码写一段小程序,生成一定数量的SQL语句,再把这些SQL语句拷贝黏贴到数据库工具执行SQL即可
以银行表 j_bank,其表结构为
id` ,`org_id` ,`bank_name`,`bank_account_id`,`owner`, `status` 0-禁用 1-启用',`deleted_flag` 0-未删除 1-已删除', `initial_balance`'期初余额', `type` 银行库类型 0-本企业银行库,1-对方银行库,2-员工银行库', `audit_status` '审核状态 0-待提交, 10-已提交(待审核), 11-新增, 12-编辑, 13-开关, 20-审核拒绝. 30-审核通过', `audit_user_id` varchar(32) DEFAULT NULL COMMENT '审核用户id', `audit_time` datetime DEFAULT NULL COMMENT '审核时间'
一、以Mysq为例子,sql语句如下:
INSERT INTO `newgwy-journal`.`j_bank`
(`id`, `org_id`, `bank_name`, `bank_account_id`, `owner`, `status`, `deleted_flag`, `initial_balance`, `type`, `audit_status`, `update_user_id`, `update_time`, `audit_user_id`, `audit_time`)
VALUES (181, '62206eae1d8a1d7c6d7f4053', '合作社hz', '56768792345434612', '', 1, 0, 1200000.00, 0, 30, '0e4ad8c888f147f29617ae7ffcbbd942', '2022-03-23 11:32:10', '74a52f7b09a74807a46a0e52b362cba5', '2022-03-23 10:15:11')
二、通过python脚本批量生成1000条待插入的SQL语句
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/3/23 11:10
# @Author : Celeste
# @Site : https://www.jianshu.com/u/71ff901eeee2
# @File : cre_data.py
# @公众号 :软件测试开发修炼
'''
# 利用python生成造数据的sql语句保存在txt文件中,再去mysql中执行
import random
import time
#构造表 t_user_info
class creat_t_blank_info():
start = time.time()
count = 10000 # 造一万条数据
benginID = 185
# 打开文件,并动态生成sql数据,将数据存放在文件中
try:
with open('./blank.txt','wb') as f:
length = count+1
for i in range(1,length):
# 定义数据,测试数据
int_i = int(i+benginID)
bank_name = str(random.choice(["建设银行","招商银行","农业银行","工商银行"])) # 银行名
bank_account_id = random.randrange(1000000,10000000000000) # 银行账号
initial_balance = random.randrange(10,100000000) # 银行余额
audit_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 创建时间
sql = 'INSERT INTO newgwy-journal.j_bank(id, org_id, bank_name, bank_account_id, owner, status, deleted_flag, initial_balance, type, audit_status, audit_user_id, audit_time) VALUES (str_i ,'62206eae1d8a1d7c6d7f4053',"'+bank_name+'" , "'+bank_account_id+'" ,initial_balance,0,30,'74a52f7b09a74807a46a0e52b362cba5', "'+audit_time+'");'
f.write(sql.encode('UTF-8'))
f.write("\n")
print("创建一万条sql共耗时:",time.time() - start)
except Exception as e:
print(Exception, ":",e)
if __name__ == '__main__':
creat_t_blank_info()
登录数据库造数据
#coding=utf-8
import pymysql
conn = pymysql.connect(“localhost”,“root”,“root”,“mysql”,charset=‘utf8’)
cursor = conn.cursor()
for i in range(1115381,10000000):
i=str(i)
sql=‘insert into movie_top(id,movieName) VALUES {}’.format(‘(’+‘’‘+i+’‘’+‘,’+‘’‘+‘moke数据’+’‘’+‘)’)
print(sql)
cursor.execute(sql)
conn.commit()
conn.close()
造数据的方法有很多,可根据不同的场景去造不同的数据;
推荐使用上一篇的造数据方法:
python使用faker及pandas造数据到Excel表