python通过sql语句造数据

2022-08-07  本文已影响0人  软件开发技术修炼

在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据。如果一条条的插入数据库或者一条条的创建数据,效率未免有点低。

如何快速的造大量的测试数据呢?

在不熟悉存储过程的情况下,今天给大家介绍一种方法,很简单的也很实用。思路是用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表

上一篇下一篇

猜你喜欢

热点阅读