目录
第二种方式:写python脚本
打开一张表。
设置数量。
除了自动推断外,还可以对每个字段单独设置生成属性。
1.安装依赖:
pip install Faker -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install peewee -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tomorrow -i https://pypi.tuna.tsinghua.edu.cn/simple
2.建表
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_name` varchar(255) NOT NULL COMMENT '账号',
`ssn` varchar(255) NOT NULL COMMENT '身份证',
`name` varchar(255) NOT NULL COMMENT '名字',
`phone_number` varchar(32) NOT NULL COMMENT '手机号',
`plate` varchar(255) NOT NULL COMMENT '车牌',
`address` varchar(255) NOT NULL COMMENT '地址',
`building_number` varchar(255) NOT NULL COMMENT '楼名',
`country` varchar(255) NOT NULL COMMENT '国家',
`birth` varchar(255) NOT NULL COMMENT '生日',
`company` varchar(255) NOT NULL COMMENT '公司',
`job` varchar(255) NOT NULL COMMENT '职位',
`card_number` varchar(255) NOT NULL COMMENT '信用卡号',
`city` varchar(255) NOT NULL COMMENT '城市',
`week` varchar(255) NOT NULL COMMENT '星期',
`email` varchar(255) NOT NULL COMMENT '邮件',
`title` varchar(255) NOT NULL COMMENT '标题',
`paragraphs` longtext NOT NULL COMMENT '内容',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=75528 DEFAULT CHARSET=utf8mb4;
3.构建模型
db_mysql = MySQLDatabase('fast_generator', user='root', password='123456', host='localhost', port=3306)
class User(Model):
user_name = TextField()
ssn = TextField()
name = TextField()
phone_number = TextField()
plate = TextField()
address = TextField()
building_number = TextField()
country = TextField()
birth = TextField()
company = TextField()
job = TextField()
card_number = TextField()
city = TextField()
week = TextField()
email = TextField()
title = TextField()
paragraphs = TextField()
class Meta:
database = db_mysql
4.存储数据(多线程会报错:参考python多线程tomorrow的使用_苍穹之跃的博客-CSDN博客_python tomorrow)
@threads(20)
def produce_data() -> User:
fake = Faker(locale='zh_CN')
# 账号
user_name = fake.user_name()
# 身份证
ssn = fake.ssn(min_age=18, max_age=90)
# 名字
name = fake.name()
# 手机号
phone_number = fake.phone_number()
# 车牌
plate = fake.license_plate()
# 地址
address = fake.address()
# 楼名
building_number = fake.building_number()
# 国家
country = fake.country()
# 生日
birth = fake.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115)
# 公司
company = fake.company()
# 职位
job = fake.job()
# 信用卡号
card_number = fake.credit_card_number(card_type=None)
# 城市
city = fake.city()
# 星期
week = fake.day_of_week()
# 邮件
email = fake.ascii_free_email()
# 单句
sentence = fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)
# 段落
paragraphs = fake.paragraphs(nb=3, ext_word_list=None)
user = User(
user_name=user_name,
ssn=ssn,
name=name,
phone_number=phone_number,
plate=plate,
address=address,
building_number=building_number,
country=country,
birth=birth,
company=company,
job=job,
card_number=card_number,
city=city,
week=week,
email=email,
title=sentence,
paragraphs=paragraphs
)
user.save()
if __name__ == '__main__':
for i in range(1000000):
produce_data()
5.完整代码
from peewee import MySQLDatabase, Model, TextField
from faker import Faker
from tomorrow import threads
db_mysql = MySQLDatabase('fast_generator', user='root', password='123456', host='localhost', port=3306)
class User(Model):
user_name = TextField()
ssn = TextField()
name = TextField()
phone_number = TextField()
plate = TextField()
address = TextField()
building_number = TextField()
country = TextField()
birth = TextField()
company = TextField()
job = TextField()
card_number = TextField()
city = TextField()
week = TextField()
email = TextField()
title = TextField()
paragraphs = TextField()
class Meta:
database = db_mysql
@threads(20)
def produce_data() -> User:
fake = Faker(locale='zh_CN')
# 账号
user_name = fake.user_name()
# 身份证
ssn = fake.ssn(min_age=18, max_age=90)
# 名字
name = fake.name()
# 手机号
phone_number = fake.phone_number()
# 车牌
plate = fake.license_plate()
# 地址
address = fake.address()
# 楼名
building_number = fake.building_number()
# 国家
country = fake.country()
# 生日
birth = fake.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115)
# 公司
company = fake.company()
# 职位
job = fake.job()
# 信用卡号
card_number = fake.credit_card_number(card_type=None)
# 城市
city = fake.city()
# 星期
week = fake.day_of_week()
# 邮件
email = fake.ascii_free_email()
# 单句
sentence = fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)
# 段落
paragraphs = fake.paragraphs(nb=3, ext_word_list=None)
user = User(
user_name=user_name,
ssn=ssn,
name=name,
phone_number=phone_number,
plate=plate,
address=address,
building_number=building_number,
country=country,
birth=birth,
company=company,
job=job,
card_number=card_number,
city=city,
week=week,
email=email,
title=sentence,
paragraphs=paragraphs
)
user.save()
if __name__ == '__main__':
for i in range(1000000):
produce_data()