zoukankan      html  css  js  c++  java
  • 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()

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

  • 相关阅读:
    python 元类
    python中__init__()、__new__()、__call__()、__del__()用法
    python内置数据结构方法的时间复杂度
    时间复杂度和空间复杂度
    数据结构及算法(1)
    sys模块python
    python中的文本操作
    python 中的os模块
    python 几种不同的格式化输出
    【js】null 和 undefined的区别?
  • 原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/7784163.html
Copyright © 2011-2022 走看看