Python:隨機生成測試數據的模塊--faker的基本使用


本文內容:

 

  1. faker的介紹
  2. faker的使用
  3. 小例子:生成隨機的數據表信息

 

 

首發日期:2018-06-15html


faker介紹:

 

  • faker是python的一個第三方模塊,是一個github上的開源項目。
  • 主要用來建立一些測試用的隨機數據。

 

官方文檔:https://faker.readthedocs.io/en/master/index.htmlpython


faker的使用:

 

1.安裝模塊

pip3 install Faker

【使用faker也能識別成功,不過新版已經更新爲Faker】mysql

 

2.導入模塊

from faker import Faker

【主要使用的是Factory類,而導入Faker,會同時導入Factory】git

image

 

3.使用步驟:github

 

  • 3.1初始化:
    fake=Faker()
  • 3.2.調用方法:
    • 利用Faker對象調用方法,調用方法的返回值就是隨機的數據。
    • 不一樣的數據須要調用不一樣的方法,常見方法參見下面。

 

from faker import Faker # fake=Faker() #默認生成美國英文數據
fake=Faker(locale='zh_CN') # 地址類
print("地址類".center(20,"-")) print(fake.address())#海南省成市豐都深圳路p座 425541
print(fake.street_address())#深圳街X座
print(fake.street_name())#長沙路
print(fake.city_name(),fake.city())#蘭州 貴陽市 (相差「市」)
print(fake.province())#陝西省


#公司類:
print("公司類".center(20,"-")) print(fake.company())#惠派國際公司信息有限公司
print(fake.company_suffix())#網絡有限公司
print(fake.company_prefix())#鑫博騰飛

#我的信息類
print("我的信息類".center(20,"-")) print(fake.name())#東浩
print(fake.simple_profile()) #{'username': 'leihan', 'name': '武帥', 'sex': 'F', 'address': '吉林省淮安市雙灤家街C座 210434', 'mail': 'lishao@hotmail.com', 'birthdate': '1988-11-12'}
print(fake.user_name(),fake.password(special_chars=False))#ajiang zI2QbHy02p

#文章類
print("文章類".center(20,"-")) print(fake.word())#當前
print(fake.words(3))#['歡迎', '支持', '圖片']
print(fake.sentence(3))#精華有關一些.
print(fake.paragraph())#你們電話空間一塊兒操做圖片要求.上海發展到了之間用戶也是的人.必須記者關係介紹註冊.用戶時候投資發佈.

 

 

 

經常使用方法:

https://faker.readthedocs.io/en/master/locales/zh_CN.html 因爲主要使用中文數據,因此提供常見的方法示例是中文的。想要了解其餘的,能夠在官網點擊其餘語言,參考示例結果,不過方法大致上都是相同的。sql

 

地址信息類:

  • fake.address():完整地址,好比海南省成市豐都深圳路p座 425541
  • fake.street_address():街道+地址,好比興城路A座
  • fake.street_name():街道名,好比宜都街
  • fake.city_name():城市名,好比蘭州
  • fake.city():城市,好比蘭州市
  • fake.province():省份名,好比陝西省
  • fake.postcode():郵編
  • fake.country():國家

 

 

公司信息類:

  • fake.company():公司名,好比惠派國際公司信息有限公司
  • fake.company_suffix():公司名後綴(公司性質),好比網絡有限公司
  • fake.company_prefix():公司名前綴,好比鑫博騰飛
 

日期類:

  • fake.date(pattern="%Y-%m-%d", end_datetime=None)
  • fake.year():隨機年份
  • fake.day_of_week():隨機星期數
  • fake.time(pattern="%H:%M:%S", end_datetime=None):隨機時間
 

 網絡類:

  • fake.company_email():企業郵箱
  • fake.email():郵箱
 

我的信息類:

  • fake.name():姓名數據庫

  • fake.user_name(*args, **kwargs):用戶名,只是隨機的英文姓名組合,通常是6位
  • fake.phone_number():電話號碼
  • fake.simple_profile(sex=None):簡略我的信息,包括用戶名,姓名,性別,地址,郵箱,出生日期。好比{'username': 'chao', 'name': '胡秀蘭', 'sex': 'M', 'address': '寧夏回族自治區玉市沙灣寧德路t座 873713', 'mail': 'uxiao@yahoo.com', 'birthdate': '1998-06-12'}
  • fake.profile(fields=None, sex=None):詳略我的信息,比簡略我的信息多出公司名、血型、工做、位置、域名等等信息。
  • fake.password():密碼
    • 參數選項:length:密碼長度;special_chars:是否能使用特殊字符;digits:是否包含數字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母。
    • 默認狀況:length=10, special_chars=True, digits=True, upper_case=True, lower_case=True
  • fake.job():工做

 

文章類:

  • fake.word(ext_word_list=None):隨機詞語
    • ext_word_list能夠是一個列表,那麼詞語會從列表中取
  • fake.words(nb=3, ext_word_list=None):隨機多個詞語
    • nb是數量,對於words來講是返回多少個詞語
  • fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None):隨機短語(會包括短語結束標誌點號)
  • fake.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None):隨機段落
  • fake.paragraphs(nb=3, ext_word_list=None):多個隨機段落

 

數據類型類:

  • fake.pystr(min_chars=None, max_chars=20):自定義長度的隨機字符串
  • fake.pyint():隨機整數
 
 

PS:

想了解Faker的更多用法,能夠參考官方文檔:https://faker.readthedocs.io/en/master/index.html
 
 

小例子:生成隨機的數據表信息

 

注意:這裏爲了例子簡便,對於數據庫操做就直接使用「命令式」的了,而不使用ORM模型式的了。網絡

 

實現過程:

  1. 利用pymysql鏈接數據庫
  2. 建立表
  3. 利用fake格式化要插入的數據
  4. 利用pymysql執行插入語句

 

 

代碼:

import pymysql
from faker import Faker

conn=pymysql.connect(host="localhost",port=3306,user="root",password="123456",db="it",charset="utf8")

cursor=conn.cursor()
#這裏給出表結構,若是使用已存在的表,能夠不建立表。
sql="""
create table user(
id int PRIMARY KEY auto_increment,
username VARCHAR(20),
password VARCHAR(20),
address VARCHAR(35) 
)
"""
cursor.execute(sql)
fake=Faker("zh-CN")
for i in range(20):
    sql="""insert into user(username,password,address) 
    values('%s','%s','%s')"""\
        %(fake.user_name(),fake.password(special_chars=False),fake.address())
    cursor.execute(sql)

conn.commit()
cursor.close()
conn.close()

 

 

結果:

image

相關文章
相關標籤/搜索