1

Faker库介绍

Faker是一个强大的库,能够帮助开发者和测试人员生成大量的假数据,但这些数据看起来却非常真实。它支持生成多种类型的数据,如姓名、地址、公司名称、电子邮件等,甚至能够根据不同国家的特定文化生成相应的数据。Faker的应用不仅限于测试,它还广泛应用于数据分析、机器学习训练集的准备以及任何需要大量样本数据的场景。

Faker安装

前提:已安装python、pip

安装命令如下:
pip install faker

Faker常用操作

    name = fake.name()                                      # 生成名称
    age = random.randint(15, 40)                            # 生成年龄
    gender = fake.random_element(elements=('男', '女'))     # 生成性别
    email = fake.email()                                    # 生成邮箱
    address = fake.address()                                # 生成地址
    text = fake.text()                                      # 生成文本
    url = fake.url()                                        # 生成url
    phone_number = fake.phone_number()                      # 生成手机号
    country = fake.country_code()                           # 生成国家代码
    city = fake.city()                                      # 生成城市
    job = fake.job()                                        # 生成工作
    ipv4 = fake.ipv4()                                      # 生成ip地址

详细可查看文档https://faker.readthedocs.io/en/stable/index.html

使用Faker生成测试数据集

使用案例:使用Faker生成5W条测试数据,分批插入到Mysql中

编写python脚本my_faker.py,内容如下:

import random
import faker
from faker.providers import BaseProvider
import mysql.connector

# 创建一个新的provider类
class CustomProvider(BaseProvider):
    def custom_data(self):
        data = ["Custom Data 1", "Custom Data 2", "Custom Data 3"]
        return self.random_element(data)

# 创建 Faker 实例
fake = faker.Faker('zh_CN')
fake.add_provider(CustomProvider)

# 连接到 MySQL 数据库
conn = mysql.connector.connect(
    host='192.168.11.1',
    user='root',
    password='123456',
    database='test'
)

# 获取游标
cursor = conn.cursor()

# 生成的数据
data_arr = []

# 批量插入数据
for i in range(50000):
    # 生成随机用户信息
    name = fake.name()                                      # 生成名称
    age = random.randint(15, 40)                            # 生成年龄
    gender = fake.random_element(elements=('男', '女'))     # 生成性别
    email = fake.email()                                    # 生成邮箱
    address = fake.address()                                # 生成地址
    text = fake.text()                                      # 生成文本
    url = fake.url()                                        # 生成url
    phone_number = fake.phone_number()                      # 生成手机号
    country = fake.country_code()                           # 生成国家代码
    city = fake.city()                                      # 生成城市
    job = fake.job()                                        # 生成工作
    ipv4 = fake.ipv4()                                      # 生成ip地址
    custom_data = fake.custom_data()                        # 生成自定义随机数据
    registration_date = fake.date_between(start_date='-1y', end_date='today')   # 生成时间
    data_arr.append((name, age, gender, email, address, text, url, phone_number, country, city, job, ipv4, custom_data, registration_date))

    # 每1000条数据执行一次插入
    if (i + 1) % 1000 == 0:
        sql = "INSERT INTO faker_user (name, age, gender, email, address, text, url, phone_number, country, city, job, ipv4, custom_data, registration_date) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
        cursor.executemany(sql, data_arr)
        conn.commit()  # 提交事务
        print(f"Inserted {i + 1} records.")
        data_arr.clear()  # 清空数据列表以准备下一组数据

if data_arr:
    sql = "INSERT INTO faker_user (name, age, gender, email, address, text, url, phone_number, country, city, job, ipv4, custom_data, registration_date) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
    cursor.executemany(sql, data_arr)
    conn.commit()   # 提交事务

cursor.close()
conn.close()

执行命令python my_faker.py
image.png

查询生成结果
image.png

总结

通过使用Faker库,开发者可以快速生成复杂的模拟数据集,极大地提高了开发和测试的效率。


kamier
1.5k 声望495 粉丝