python脚本批量生成数据

   在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据。如果一条条的插入数据库或者一条条的创建数据,效率未免有点低。如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家介绍一种方法,很简单的也很实用。思路是用python代码写一段小程序,生成一定数量的SQL语句,再把这些SQL语句拷贝黏贴到数据库工具执行SQL即可。

假如有个联系人的学生表student,其表结构为姓名name、学校school、电话telphone、邮箱email。

以Mysq为例子,sql语句如下:

INSERT INTO student(name , shool , telephone , email) VALUES(“小明” ,”万航渡路小学” , 13810001000 ,”xiaoming@gmail.com”);

通过python脚本批量生成1000条待插入的SQL语句

# -*- coding: utf-8 -*-
__author__ = '肥猫与猪宝宝'


f = open('student.txt', 'w')

for i in  range(1, 1001):
    str_i = str(i)
    name = "张三" + str_i
    school = "万航渡路小学"
    telephone = 13810000000 + i
    email = "张三" + str_i + "@gmail.com"
    sql = 'INSERT INTO student(name , school , telephone , email) VALUES ("'+name+'" , "'+school+'" , '+str(telephone)+' , "'+email+'");'
    f.write(sql)
    f.write("
")

f.close()

 

运行下,在当前工作目录,生成student.txt。

分析下程序

f = open('student.txt', 'w')

用写的方式打开student.txt这个文件,并赋值给f

for i in range(1 , 1001)

 for循环,range代表范围但是不包括1001

sql中的“'+name’”就是拼接,让变量被插入sql

f. write 

方法写入( )括号内的内容

f.write("
")

就是写入的内容换行

f.close()

调用close方法关闭文件,有打开就要有关闭。

在student.txt文件中选中全部sql去mysql工具中执行即可,常见的mysql工具有sqlyog、navicat都是很好用的。

   对于数据库插入日期来说,"2020-08-26" 双引号也可以插入,代码如下:

# -*- coding: utf-8 -*-
__author__ = '肥猫与猪宝宝'


f = open('student.txt', 'w')

for i in  range(1002, 5001):
    str_i = str(i)
    id = "1000" + str_i
    knight_id = "1921061191" + str_i
    step = 1000
    date = '"2020-08-26"'
    is_deleted = 0
    created_at = '"2020-08-26 15:42:33"'
    updated_at = '"2020-08-26 15:42:33"'
    ezone_shard_info = "NULL"
    drc_check_time = '"2020-08-26 15:42:33"'
    sql = 'INSERT INTO `tb_knight_daily_donate_step`(id,knight_id,step,date,is_deleted,created_at,updated_at,ezone_shard_info,drc_check_time) VALUES (' + str(id) + ' , ' + str(knight_id) + ' ,'+str(step)+' , '+date+' , '+str(is_deleted)+' , '+created_at+' , '+updated_at+' , '+ezone_shard_info+' , '+drc_check_time+');'
    f.write(sql)
    f.write("
")

f.close()

 再来个例子:

# -*- coding: utf-8 -*-
__author__ = '肥猫与猪宝宝'


f = open('student.txt', 'w')

for i in  range(1, 2000):
    str_i = str(i)
    id = "1000" + str_i
    knight_id = "1921061191" + str_i
    trace_uuid = '1dfaf46a-920c-4a1e-8391-22633af90' + str_i
    out_certify_id = "'e164ba0c8dfe31beec12f6de265f3980'"
    out_scene_type = 1
    status = 7
    name = '"审核测"'
    identity = '"34222219930821003X"'
    hash = '"9cdbaffc6788bb24406e0b4e6456c5c9jpeg"'
    init_device_id = '"YDSiZVV1lZ0DACrsh+HMNY9N"'
    init_latitude = "121.380553"
    init_longitude = "31.231648"
    complete_device_id = '"YDSiZVV1lZ0DACrsh+HMNY9N"'
    complete_latitude = "121.380553"
    complete_longitude = "31.231648"
    meta_info = "'{"apdidToken":"emkoR+Qg7dnvEPMfJOkk/qnAi1fUDO/z/vhlYhKdDBcaZLH2dwEAAA==","appName":"me.ele.crowdsource","appVersion":"7.8.0","bioMetaInfo":"6.2.0:21478612992,0","deviceModel":"V1824BA","deviceType":"android","osVersion":"10","sdkVersion":"1.1.0","zimVer":"1.0.0"}'"
    init_time = '"2021-03-17 12:42:33"'
    complete_time = '"2021-03-17 12:42:33"'
    init_code = '"OK"'
    init_desc = '"初始化成功(Z8100)"'
    result_code = '"OK"'
    material_matched = '"T"'
    out_result_info = "'{"secrets":[],"resultCode":"OK","resultMsg":"认证通过(Z8300)","reqMsgId":null,"identityInfo":null,"materialInfo":"{}","materialMatched":"T","passed":"T","reason":null,"success":true}'"
    date = '"2020-08-26"'
    is_deleted = 0
    created_at = '"2021-03-17 12:42:33"'
    updated_at = '"2021-03-17 12:42:33"'
    ezone_shard_info = "NULL"
    drc_check_time = '"2021-03-17 12:42:33"'
    sql = 'INSERT INTO `tb_zim`(id,knight_id,trace_uuid,out_certify_id,out_scene_type,status,name,identity,hash,' 
          'init_device_id,init_latitude,init_longitude,complete_device_id,complete_latitude,complete_longitude,' 
          'meta_info,init_time,complete_time,init_code,init_desc,result_code,material_matched,out_result_info,' 
          'is_deleted,created_at,updated_at,ezone_shard_info,drc_check_time) VALUES (' + str(
        id) + ' , '+str(knight_id)+' ,'+trace_uuid+', '+out_certify_id+' , '+str(out_scene_type)+' , '+str(status)+' , '+name+' , '+identity+' , '+hash+' , '+init_device_id+' , '+init_latitude+' , '+init_longitude+' , '+complete_device_id+' , '+complete_latitude+' , '+complete_longitude+' , '+meta_info+' , '+init_time +' , '+complete_time+' , '+init_code+' ,  '+init_desc+' , '+result_code+' , '+material_matched+' , '+out_result_info+' ,' + str(is_deleted) + ' , ' + created_at + ' , ' + updated_at + ' , ' + ezone_shard_info + ' , ' + drc_check_time + ');'
    f.write(sql)
    f.write("
")

f.close()

到此为止,简单的造数据方法就写完了。

原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/7784163.html