欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Python | 使用 faker 库生成逼真的测试数据的方法-实例:批量生成测试数据

最编程 2024-08-13 21:38:49
...

1)数据保存到Excel:

实现步骤:

(1)通过openpyxl打开Excel

(2)获取Excel的所有sheet页

(3)通过fake生成数据,写入单元格

(4)保存Excel

代码:

 1 from faker import Faker
 2 from openpyxl import load_workbook
 3 
 4 # 1、从faker模块导入Faker这个类。
 5 # 2、实例化,保存到变量fake中。
 6 # 3、调用name()方法随机生成一个名字。
 7 # 4、调用address()方法随机生成地址信息。
 8 
 9 
10 fake = Faker(locale='zh_CN')
11 
12 wb = load_workbook("1.xlsx")
13 
14 for sheetName in wb.sheetnames:
15     sheet = wb[sheetName]
16     for rownum in range(2, 100):
17         sheet.cell(row=rownum, column=1).value = fake.name()
18         sheet.cell(row=rownum, column=2).value = fake.address()
19         sheet.cell(row=rownum, column=3).value = fake.phone_number()
20         sheet.cell(row=rownum, column=4).value = fake.ssn(min_age=18, max_age=18)
21 
22 wb.save("1.xlsx")

运行结果如下:

2)数据保存到mysql数据库:

实现步骤:

(1)通过pymysql连接数据库

(2)创建数据表

(3)通过fake生成数据,并形成sql语句

(4)通过pymysql执行插入语句

代码:

 1 from faker import Faker
 2 
 3 import pymysql
 4 
 5  
 6 
 7 conn = pymysql.connect(host="xx.xxx.xxx.xx", port=3306, user="xxx", password="xxx", db="xx", charset="utf8")
 8 
 9  
10 
11 cursor = conn.cursor()
12 
13 # 这里给出表结构,如果使用已存在的表,可以不创建表。
14 
15 sql = """
16 
17 create table user(
18 
19 id int PRIMARY KEY auto_increment,
20 
21 username VARCHAR(20),
22 
23 password VARCHAR(20),
24 
25 address VARCHAR(35),
26 
27 tel VARCHAR(20),
28 
29 ssn VARCHAR(20)
30 
31 )
32 
33 """
34 
35 cursor.execute(sql)
36 
37  
38 
39 fake = Faker("zh-CN")
40 
41 for i in range(20):
42 
43     sql = """insert into user(username,password,address,tel,ssn)
44 
45   values('%s','%s','%s','%s','%s')""" \
46 
47           % (fake.user_name(), fake.password(special_chars=False), fake.address(), fake.phone_number(), fake.ssn(min_age=18, max_age=88, gender="M"))
48 
49     cursor.execute(sql)
50 
51  
52 
53 conn.commit()
54 
55 cursor.close()
56 
57 conn.close()

运行结果如下:

PS:不知道细心的你,有没有发现地址看起来怪怪的啊。

是的,虽然数据看起来还挺逼真的,但是这并不是真实的地址,而是将省、市、街道之类的随机组合在一起的。

原因在于,address的源代码中,并没有维护它们的对应关系,而且有些市或区县是随便写的。有兴趣的,可以看下源代码,路径参照:

D:\Python\Python37\Lib\site-packages\faker\providers\address\zh_CN

原文地址:https://www.cnblogs.com/jessie-wu/p/14899300.html