目录

第一种方式:利用navicat16的新功能!

 第二种方式:写python脚本


第一种方式:利用navicat16的新功能!(破解版私聊博主)

打开一张表。


设置数量。 

除了自动推断外,还可以对每个字段单独设置生成属性。

 第二种方式:写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()

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐