1-Python - faker

about

from:https://faker.readthedocs.io/en/master/index.html
Faker is a Python package that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.

install

pip install Faker==5.0.2
pip install-i https://pypi.doubanio.com/simple Faker==5.0.2

注意,Faker4.0.0开始仅支持Python3.5及以上版本。

usage

实例化faker对象

import faker

fk = faker.Faker()  # locale='zh_CN' 中文  locale='en_US' 默认美式英文
print(fk.name())   # Jennifer Scott

# 一个简单示例
# import faker
import prettytable  # pip install prettytable
fk = faker.Faker(locale='en_US')  # locale='zh_CN' 中文  locale='en_US' 默认美式英文

table = prettytable.PrettyTable(['序号', '姓名', '密码', '地址'])
for i in range(1, 6):
    table.add_row([i, fk.name(), fk.password(special_chars=False), fk.address()])
print(table)
"""
# locale='zh_CN'
+------+--------+------------+----------------------------------+
| 序号 |  姓名  |    密码    |               地址               |
+------+--------+------------+----------------------------------+
|  1   |  李华  | wKKhucnB99 |   广东省华县大兴万街l座 684292   |
|  2   |  张飞  | FWnbEVuOl4 |  黑龙江省帅县闵行丁路L座 575807  |
|  3   |  董荣  | a5lf83UcnF | 浙江省合山县丰都关岭路b座 987377 |
|  4   | 刘桂香 | rXN1fuY79S |  甘肃省银川市东丽严路v座 497847  |
|  5   | 郑丽丽 | 0ihQy5SP8L |   陕西省荣市白云赵路m座 806453   |
+------+--------+------------+----------------------------------+
# locale='en_US'
+------+----------------+------------+-----------------------------+
| 序号 |      姓名      |    密码    |             地址            |
+------+----------------+------------+-----------------------------+
|  1   | Melanie Barton | euj3IRmn0h |      443 Sanchez Locks      |
|      |                |            |   New Aaronfort, PA 19068   |
|  2   | Kelly Aguilar  | DOUYtmhc68 | 2593 Chen Orchard Suite 171 |
|      |                |            |    North Willie, LA 98648   |
|  3   | Misty Ballard  | aRRHVgLz9h |  5542 Adam Tunnel Suite 725 |
|      |                |            |     Piercefurt, AZ 05959    |
|  4   |    Jose Key    | 86KpHsM3eZ | 740 Olsen Springs Suite 653 |
|      |                |            |    Stephenview, DC 82664    |
|  5   |  Nancy Adams   | 7FQc3JopXI |   942 Wright Wall Apt. 376  |
|      |                |            |    Kristenland, UT 37199    |
+------+----------------+------------+-----------------------------+
"""

locale参数不指定则默认为美式英文,常用的有:

  • zh_CN:简体中文
  • zh_TW:繁体中文,当然,也会随机返回简体中文
  • en_US:英语

其他的参考:https://faker.readthedocs.io/en/master/locales.html

来看看怎么用吧!这里主要介绍生成中文数据,不过其他语言的数据也类似。

个人信息类

import faker

fk = faker.Faker(locale='zh_CN')
fk.name()   # 姓名
fk.user_name()   # 随机英文字符组合的用户名
fk.phone_number()   # 手机号
fk.password()   # 密码
"""
fk.password() 可选参数
- length:密码长度
- special_chars=True:是否使用特殊字符
- digits=True:是否包含数字
- upper_case: 是否包含大写字母
- lower_case: 是否包含小写字母
"""
fk.job()
fk.email()   # 邮箱
fk.company_email()  # 企业邮箱
fk.simple_profile()  # 简略个人信息
fk.profile()   # 详细的个人信息
"""
吴秀英
omeng
15811933679
M7h(JwuS*A
射频工程师
twen@yahoo.com
weifang@lei.cn
{'username': 'junqiu', 'name': '刘玉华', 'sex': 'M', 'address': '重庆市合肥县长寿陈路k座 300660', 'mail': 'leiguo@hotmail.com', 'birthdate': datetime.date(1941, 1, 31)}
{'job': '理疗师', 'company': '万迅电脑信息有限公司', 'ssn': '445303195710288016', 'residence': '海南省岩市滨城刘街y座 949799', 'current_location': (Decimal('-78.757133'), Decimal('43.192893')), 'blood_group': 'O-', 'website': ['https://fan.cn/', 'https://www.75.cn/', 'https://long.cn/', 'https://www.mingjuan.cn/'], 'username': 'yansun', 'name': '刘峰', 'sex': 'M', 'address': '宁夏回族自治区福州县滨城海门路g座 430314', 'mail': 'yang89@hotmail.com', 'birthdate': datetime.date(1932, 1, 26)}
"""

地址信息类

import faker

fk = faker.Faker(locale='zh_CN')

fk.country()   # 国家
fk.postcode()  # 邮编
fk.province()  # 省份
fk.city()  # 城市
fk.city_name()  # 城市名
fk.street_name()  # 街道名
fk.street_address()  # 街道地址
fk.address()  # 完整地址
"""
莱索托
954147
甘肃省
淑兰县
沈阳
贵阳街
西宁路W座
云南省华县崇文刘街u座 936525
"""

公司信息类

import faker

fk = faker.Faker(locale='zh_CN')

print(fk.company())  # 公司名
print(fk.company_suffix())  # 公司名后缀
print(fk.company_prefix())  # 公司名前缀
"""
通际名联网络有限公司
传媒有限公司
济南亿次元
"""

日期、时间、数值类

import faker

fk = faker.Faker(locale='zh_CN')

fk.pystr(max_chars=20)  # 自定义长度的随机字符串
fk.pyint()  # 随机整数
fk.pyfloat()  # 随机小数
"""
qEKwImQzVafKZIzKitUJ
352
-27642013.0
"""

fk.date()  # 随机日期
fk.date(pattern='%Y/%m/%d %H:%M:%S')  # 随机日期时间
fk.year()  # 随机年份
fk.day_of_week()  # 随机星期数
fk.time()  # 随机时间
fk.time(pattern='%Y-%m-%d %H:%M:%S')  # 随机日期时间
"""
1989-11-09
1987/07/08 03:07:50
1978
Sunday
06:05:28
1900-01-01 07:07:12
"""

文章信息类

import faker

fk = faker.Faker(locale='zh_CN')

fk.word()  # 随机词语
fk.word(ext_word_list=['登录', '注册', '登出'])  # 返回列表中的随机元素
fk.words(nb=2, ext_word_list=['登录', '注册', '登出'])  # 以列表的形式返回列表中的指定个数的元素
"""
以后
登录
['登录', '登出']
"""
fk.sentence()  # 随机短语
# 返回列表中指定数量元素拼接后的字符串
fk.sentence(nb_words=2, variable_nb_words=True, ext_word_list=['以列表的形式返回列表中的指定个数的元素', '返回列表中的随机元素', '本站商品中国政府朋友或者.'])
fk.paragraph()  # 随机段略
# 以列表的形式返回指定数量的随机段略
fk.paragraphs(nb=2, ext_word_list=['以列表的形式返回列表中的指定个数的元素', '返回列表中的随机元素', '本站商品中国政府朋友或者.'])
"""
出来可能其他次数一定出来今年建设.
本站商品中国政府朋友或者.返回列表中的随机元素.
事情包括积分作为类型是否直接一切.下载重要国内标准.内容世界结果.这么今年北京电影人员.
['返回列表中的随机元素以列表的形式返回列表中的指定个数的元素以列表的形式返回列表中的指定个数的元素以列表的形式返回列表中的指定个数的元素.本站商品中国政府朋友或者.本站商品中国政府朋友或者.以列表的形式返回列表中的指定个数的元素以列表的形式返回列表中的指定个数的元素以列表的形式返回列表中的指定个数的元素以列表的形式返回列表中的指定个数的元素.返回列表中的随机元素以列表的形式返回列表中的指定个数的元素本站商品中国政府朋友或者.以列表的形式返回列表中的指定个数的元素本站商品中国政府朋友或者.本站商品中国政府朋友或者.本站商品中国政府朋友或者..', '返回列表中的随机元素本站商品中国政府朋友或者.以列表的形式返回列表中的指定个数的元素以列表的形式返回列表中的指定个数的元素以列表的形式返回列表中的指定个数的元素返回列表中的随机元素.以列表的形式返回列表中的指定个数的元素本站商品中国政府朋友或者.返回列表中的随机元素以列表的形式返回列表中的指定个数的元素.']
"""

Django批量伪造数据

django4.2 + mysql8.0

models.py

from django.db import models


class UserInfo(models.Model):
    num = models.CharField(max_length=32, verbose_name='序号', default=0)
    username = models.CharField(max_length=32, verbose_name='用户名')
    phone = models.CharField(max_length=11, verbose_name='手机号')
    email = models.EmailField(verbose_name='邮箱')

    def __str__(self):
        return self.username

脚本中使用Django环境执行批量伪造数据:

# -*- coding = utf-8 -*-
import os
import django
import faker


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dj42.settings")  # MB:项目名称
django.setup()  # 这一步就加载了Django环境

# 必须是django.setup()之后,才能引入模型类
from apps.mypage.models import UserInfo

fk = faker.Faker(locale='zh_CN')  # locale='zh_CN' 中文  locale='en_US' 默认美式英文

def foo():
    data_list = [
        UserInfo(num=i, username=fk.name(), phone=fk.phone_number(), email=fk.email())
        for i in range(1, 100001)
    ]
    UserInfo.objects.bulk_create(data_list)

if __name__ == '__main__':
    foo()


that's all, see also:

Python:随机生成测试数据的模块--faker的基本使用 | Python Faker的使用(1):基础使用方法与函数速查

posted @ 2020-12-25 11:15  听雨危楼  阅读(372)  评论(0编辑  收藏  举报