Python连接MySQL数据库,批量生成测试数据。
效果如图所示:
代码如下:
import os
import random
import time
import pymysql as ps
db=ps.connect(host='192.168.1.1',user='root',password='123456',database='test',charset='utf8') #连接数据库
cur=db.cursor() #游标用来执行SQL语句
try:
#intable=input('输入要创建的表:') #手动输入表名
#cur.execute('drop table {}'.format(intable))
intable='user1' #默认定义user1表
cur.execute('drop table {}'.format(intable))
create_table=cur.execute('create table if not exists {0}(id int primary key, name varchar(100),age int,salary int,dt datetime)'.format(intable))
db.commit()
print(intable,'表已创建')
except:
print('创建',intable,'表失败')
#ID不重复,循环100次
for id in range(0,100):
print(id)
#生成随机姓名
str=[chr(i) for i in range(97,123)] #97-123为小写字母,65-91为大写
for j in str:
name=random.choice(str)+random.choice(str)+random.choice(str)+random.choice(str) #随机组成4个字母名字
#生成年龄
age=random.randrange(20,40,1) #年龄20-40,步长为1
#生成工资
salary=random.randrange(10000,20000,100)
#生成日期
date1=(2021,1,1,0,0,0,0,0,0) #年月日分时秒
date2=(2022,3,1,0,0,0,0,0,0)
start=time.mktime(date1)
end=time.mktime(date2)
#生成日期
tm=random.randrange(start,end) #开始与结束时间
date_tuple=time.localtime(tm) #生成元组形式
dt=time.strftime('%Y-%m-%d',date_tuple) #转换字符串形式
#插入数据
data=cur.execute("insert into user1 values({0},'{1}',{2},{3},'{4}')".format(id,name,age,salary,dt))
data_all=cur.execute('select * from user1')
db.commit() #提交SQL变更
list=cur.fetchall() #提取所有数据
print(list)