在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据。如果一条条的插入数据库或者一条条的创建数据,效率未免有点低。如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家介绍一种方法,很简单的也很实用。思路是用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("\n")
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("\n")
就是写入的内容换行
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= 1000date= '"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("\n")
f.close()
到此为止,简单的造数据方法就写完了。