python随机数据库_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)

#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值