天天看點

好用!Python的Faker庫

項目開發初期,為了測試友善,我們總要造不少假資料到系統中,盡量模拟真實環境。比如要建立一批使用者名,建立一段文本,電話号碼,街道位址、IP位址等等。平時我們基本是鍵盤一頓亂敲,随便造個什麼字元串出來,當然誰也不認識誰。現在你不要這樣做了,用Faker就能滿足你的一切需求。

1. 安裝

pip install Faker
           

2. 簡單使用

>>> from faker import Faker
>>> fake = Faker(locale='zh_CN')
>>> fake.name()
'李潔'
>>> fake.address()
'上海市興安盟縣江北東莞路r座 803484'
           

參數 locale:為生成資料的文化選項(語種),預設為 en_US,隻有使用了相關文化,才能生成相對應的随機資訊

常見的文化選項:

  • zh_CN - Chinese (China Mainland)
  • zh_TW - Chinese (China Taiwan)
  • en_US - English (United States)

3. 其他方法

3.1 地理資訊類

city_suffix():市,縣
country():國家
country_code():國家編碼
district():區
geo_coordinate():地理坐标
latitude():地理坐标(緯度)
longitude():地理坐标(經度)
postcode():郵編
province():省份
address():詳細位址
street_address():街道位址
street_name():街道名
street_suffix():街、路
           

3.2 基礎資訊類

ssn():生成身份證号
bs():随機公司服務名
company():随機公司名(長)
company_prefix():随機公司名(短)
company_suffix():公司性質,如'資訊有限公司'
credit_card_expire():随機信用卡到期日,如'03/30'
credit_card_full():生成完整信用卡資訊
credit_card_number():信用卡号
credit_card_provider():信用卡類型
credit_card_security_code():信用卡安全碼
job():随機職位
first_name_female():女性名
first_name_male():男性名
name():随機生成全名
name_female():男性全名
name_male():女性全名
phone_number():随機生成手機号
phonenumber_prefix():随機生成手機号段,如139
           

3.3 郵箱資訊類

ascii_company_email():随機ASCII公司郵箱名
ascii_email():随機ASCII郵箱:
company_email():公司郵箱
email():普通郵箱
safe_email():安全郵箱
           

3.4 網絡基礎資訊類

domain_name():生成域名
domain_word():域詞(即,不包含字尾)
ipv4():随機IP4位址
ipv6():随機IP6位址
mac_address():随機MAC位址
tld():網址域名字尾(.com,.net.cn,等等,不包括.)
uri():随機URI位址
uri_extension():網址檔案字尾
uri_page():網址檔案(不包含字尾)
uri_path():網址檔案路徑(不包含檔案名)
url():随機URL位址
user_name():随機使用者名
image_url():随機URL位址
           

3.5 浏覽器資訊類

chrome():随機生成Chrome的浏覽器user_agent資訊
firefox():随機生成FireFox的浏覽器user_agent資訊
internet_explorer():随機生成IE的浏覽器user_agent資訊
opera():随機生成Opera的浏覽器user_agent資訊
safari():随機生成Safari的浏覽器user_agent資訊
linux_platform_token():随機Linux資訊
user_agent():随機user_agent資訊
           

3.6 數字資訊

numerify():三位随機數字
random_digit():0~9随機數
random_digit_not_null():1~9的随機數
random_int():随機數字,預設0~9999,可以通過設定min,max來設定
random_number():随機數字,參數digits設定生成的數字位數
pyfloat():随機Float數字
pyint():随機Int數字(參考random_int()參數)
pydecimal():随機Decimal數字(參考pyfloat參數)
           

3.7 文本加密類

pystr():随機字元串
random_element():随機字母
random_letter():随機字母
paragraph():随機生成一個段落
paragraphs():随機生成多個段落
sentence():随機生成一句話
sentences():随機生成多句話,與段落類似
text():随機生成一篇文章
word():随機生成詞語
words():随機生成多個詞語,用法與段落,句子,類似
binary():随機生成二進制編碼
boolean():True/False
language_code():随機生成兩位語言編碼
locale():随機生成語言/國際 資訊
md5():随機生成MD5
null_boolean():NULL/True/False
password():随機生成密碼,可選參數:length:密碼長度;special_chars:是否能使用特殊字元;digits:是否包含數字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母
sha1():随機SHA1
sha256():随機SHA256
uuid4():随機UUID
           

4. 實戰使用

在資料庫建一張表,通過Faker造資料,插入到表中。并且列印Faker造的資料。

import pymysql
from faker import Faker


conn = pymysql.connect(host="114.215.129.166", port=3306, user="nice", password="", db="flask201",
                       charset="utf8")


cursor = conn.cursor()
sql1 = """drop table if exists faker_user"""
sql2 = """
create table faker_user(
pid int primary key auto_increment,
username varchar(20),
password varchar(20),
address varchar(35) 
)
"""
cursor.execute(sql1)
cursor.execute(sql2)
fake = Faker("zh-CN")
for i in range(20):
    sql = """insert into faker_user(username,password,address) 
    values('%s','%s','%s')""" % (fake.name(), fake.password(special_chars=False), fake.address())
    print('姓名:'+fake.name() + '|密碼:'+fake.password(special_chars=False) + '|位址:'+fake.address())
    cursor.execute(sql)


conn.commit()
cursor.close()
conn.close()
           
姓名:王平|密碼:iZqPxLO947|位址:吉林省莉市房山楊路R座 491718
姓名:柏倩|密碼:h853B0idne|位址:遼甯省玉華縣薊州永安街g座 205585
姓名:賈俊|密碼:UsRtGXAv9o|位址:湖北省石家莊市大興傅街c座 861094
姓名:梁丹|密碼:ke7QZBdBC3|位址:湖南省太原市璧山太原街m座 939225
姓名:丁燕|密碼:Ee9Gt9Jh5E|位址:雲南省穎縣海港梁街A座 403237
姓名:餘敏|密碼:d2KhMqlen0|位址:江西省晶市城北深圳路E座 683731
姓名:朱冬梅|密碼:aGpEzKJZ2a|位址:台灣省建市淄川張家港路F座 443320
姓名:韋小紅|密碼:ZDZXzsWiJ1|位址:河北省桂榮市朝陽賀街R座 559885
姓名:藍豔|密碼:tvDugIUra3|位址:湖北省西甯市和平李路n座 365745
姓名:黎雪|密碼:Is1U1UAu57|位址:香港特别行政區六盤水市六枝特洪街e座 507272
姓名:劉利|密碼:8zzbAEowYA|位址:遼甯省巢湖縣西夏台北街k座 665328
姓名:董波|密碼:q9TGizssrV|位址:台灣省桂芝市長壽大冶路v座 842339
姓名:劉志強|密碼:Za9Vzdocki|位址:湖南省梅市門頭溝梧州街r座 897061
姓名:塗飛|密碼:9JFvmsO0r2|位址:遼甯省金鳳市海港曾路z座 577420
姓名:仲秀英|密碼:6MJXQ1w6qb|位址:貴州省淑英市朝陽蔡路r座 880809
姓名:趙冬梅|密碼:7oUoUrw22Z|位址:湖北省斌市黃浦阜新路f座 635086
姓名:張麗麗|密碼:5DnZJhfnnB|位址:香港特别行政區秀芳縣高坪李路b座 543520
姓名:徐燕|密碼:6WbRXyiY2R|位址:河北省惠州市錫山南甯路T座 266905
姓名:衛帥|密碼:0XqEZPbiGZ|位址:貴州省福州縣浔陽孫路L座 535933
姓名:李桂英|密碼:6hLMsaqSI1|位址:重慶市遼陽市華龍姬街k座 718930