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()
'''

2python

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

 

import pymysqlimport GetDataclass 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)#
相关文章
相关标签/搜索