python随机生成测试数据插入到mysql

1.造数据(使用脚本完成1w条):需求:模拟个人信息的数据(姓名(长度必须是6-12位,由大写字母/小写字母/数字)、
性别(男、女中随机)、年龄(18-50之间随机)、邮箱(@163.com/@qq.com/@126.com,前面的账户的名是与姓名相同));
最后要求上面全部使用类、面向对象完成(写入到csv数据格式文件或者写入数据库,excel)excel、csv、yaml、json(数据格式文件)
例如:姓名随机出来:abcdef----->abcdefg@163.com 最后文件命名为GetData.py


import random
#另外一种方式:使用python的内置模块string
import string
class GetData():
#self表示的是当前对象的引用
def get_Name(self):
get_length=random.randint(6,12)
get_source=string.digits+string.ascii_letters
get_str="".join(random.sample(get_source,get_length))
return get_str
def get_Age(self):
return random.randint(18,50)

def get_Sex(self):
list1=["男","女"]
#choice表示的是从传入的参数序列中进行随机返回一个元素,如果序列为空则抛出异常(IndexError)
return random.choice(list1)
#邮箱
def get_Email(self):
list1=["@163.com","@126.com","@qq.com"]
#["@","1","6","3"]
return random.choice(list1)

'''
#实现姓名字符串的获取也可以用第二种方法
def getName():
get_chr=""
#声明的是所需要组成构成数据的数据源变量
#sourceSeed="abcdefghijklmn"
#字母都是可以通过ASCII码进行相互转换A----->65 a------>97
#字符型---->由一个字母或者一个汉字所构成;字符型与整形之间是可以数据类型强制转换;
#涉及两种重要函数:ord(传入字符串参数)/chr(传入整形值)
get_lenth=random.randint(6,12)
print("长度",get_lenth)
for j in range(1,get_lenth+1):
get_random_chr=random.randint(0,122)
print("随机的数是:",get_random_chr)
#print(chr(get_chr))
get_return_chr=get_Not_In(get_random_chr)
print(get_return_chr)
if get_return_chr>9:
get_chr+=chr(get_return_chr)
else:
get_chr+=str(get_return_chr)
#print(get_return_chr)
print(get_chr)

#声明一个函数完成判定不是在91-97之间的数
def get_Not_In(input_number):
list1=[]
for i in range(10, 65):
list1.append(i)
for i in range(91, 97):
list1.append(i)
#print(set(list1))
while True:
if input_number in set(list1):
get_random_chr = random.randint(0, 122)
input_number= get_random_chr
else:
break
return input_number
getName()
'''

2

如果数据量过大的话,数据是存储在数据格式文件中较好还是数据库中较好?为什么?
#数据量大的时候,数据肯定是存储在数据库中(mysql数据库,oracle数据库);数据量较大时可能导致文件
#对象流获取失败(文件的打开失败)---->稳定性没有数据库强
#-------------------------------------------------------------------------------
#封装数据库的创建表、插入数据、更新数据、删除数据
#完成第一个需求:创建一个表:调用创建表的方法时,能够实现传入对应的字段即可创建对应的表结构
#例如:create_table("name varchar(20)","sex char(4)","")

 

import pymysql
import GetData


class Mysql_Oprea():

#驱动器对象创建对象时进行初始化
def __init__(self):
self.get_conn = pymysql.connect(host="localhost",port=3307,user="root",password= "",database="test0513")
self.get_curosr = self.get_conn.cursor()
#创建一个创建表的方法
def create_table(self,tableName,*args):
#list1=[]
get_len=len(args)
count=0
str1=""
for i in args:
count+=1
#list1.append(i)
print(i)
str1+=i
if count!=get_len:
str1+=","
#tuple1=tuple(list1)
print(str1)
str_create_sql="create table %s (%s)"%(tableName,str1)
self.get_curosr.execute(str_create_sql)
print(str_create_sql)
#create table stu (stu_name varchar(10))

#删除表
def drop_table(self,tables):

drop_tables='drop table '+tables
print(drop_tables)
self.get_curosr.execute(drop_tables)

#插入数据
def insert_data(self,tableName,*args):

str_create_sql = "insert into %s values %s" % (tableName, args)
self.get_curosr.execute(str_create_sql)
print(str_create_sql)
# create table stu (stu_name varchar(10))
    #插入数据只是简单的写了,比如还有指定列的方法插入,还可以用比如字典的方法写,也可以用一个列表包含多个元组的方法。

if __name__ == '__main__':
mysqlTest=Mysql_Oprea()
tuple1=("lesson_id int","lesson_name varchar(10)")
# mysqlTest.create_table("student","s_name varchar(15)","s_Age int(5)","s_sex char(8)","s_Email varchar(20)")
# mysqlTest.drop_table('student')
get_data=GetData.GetData()
for i in range(1, 10001):

get_name = get_data.get_Name()
get_sex = get_data.get_Sex()
get_age = get_data.get_Age()
get_email = get_data.get_Email()
get_email=get_name+get_email
# csv_write_obj.writerow([get_name, get_sex, get_age, get_name + get_email])
mysqlTest.insert_data('student',get_name,get_age,get_sex,get_email)
#

posted @ 2019-07-20 15:37  洪雁  阅读(535)  评论(0编辑  收藏  举报