為了方便準備試驗用的數據,建議使用Faker這個庫來模擬。Faker是一個Python軟體包,可生成偽造數據。無論是需要引導資料庫,創建美觀的XML文檔,填充持久性以進行壓力測試,還是匿名化來自生產服務的數據,Faker都能完美實現。 ...
準備數據
為了方便準備試驗用的數據,建議使用Faker這個庫來模擬。Faker是一個Python軟體包,可生成偽造數據。無論是需要引導資料庫,創建美觀的XML文檔,填充持久性以進行壓力測試,還是匿名化來自生產服務的數據,Faker都能完美實現。
pip install faker
以下代碼生成姓名、性別這類最常用的試驗數據。
from faker import Faker def fakedata(maxtimes): fake = Faker('zh_CN') data_total = [[fake.name(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(), fake.date_time(tzinfo=None)] for x in range(maxtimes)] print(data_total) return data_total fakedata(10)
由於每次fake時,數據都在變化。為了方便使用,可以將生成的數據保存在文件中。文件類型可以是:
◇txt文件。雖然最簡單最自由,但要程式可行分析,不建議
◇excel文件。在Windows環境下使用非常方便。但平臺相容性差
◇csv文件。相容性強,跨平臺,解析方便,推薦
◇json文件。相容性強,跨平臺,解析方便,推薦
◇其它格式可以考慮yaml格式等
下麵代碼演示瞭如何以csv格式保存生成的數據:
from faker import Faker import csv def fakedata(maxtimes): fake = Faker('zh_CN') data_total = [[fake.name(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(), fake.date_time(tzinfo=None)] for x in range(maxtimes)] print(data_total) return data_total headerlist = ['name','company','phone','email','address','date'] with open('fake.csv','w',encoding='utf-8') as f: writer = csv.writer(f) # 寫頭部信息 writer.writerow(headerlist) # 寫數據 data = fakedata(100) writer.writerows(data)
以上代碼生成100條記錄,並且保存在fake.csv文件備用。
創建資料庫並且插入記錄
sqlite是python3內置的標準庫,直接引用即可,不需要任何安裝,非常方便。
import sqlite3 import csv # 連接資料庫,如果沒有,則直接創建 conn = sqlite3.connect("demo.db") cur = conn.cursor() # 創建表 sqlstr = 'create table demo_table(name text,company text,phone text,email text,address text,date text)' cur.execute(sqlstr) # 不提交表格沒有真正創建 conn.commit() # 從文件中讀出數據,並且依次寫入資料庫 with open('fake.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) # 讀頭部信息 header = next(reader) print(header) # 開始遍歷 for row in reader: if row: insertsql = f"insert into demo_table (name,company,phone,email,address) values ('{row[0]}','{row[1]}','{row[2]}','{row[3]}','{row[4]}')" # 插入資料庫記錄 cur.execute(insertsql) # 一次性提交 cur.close() conn.commit() conn.close()
以上就將保存在fake.csv中的內容全部插入到了資料庫中。後續的CRUD操作都很類似。
sqlite還可以在記憶體中創建資料庫,只要輸入特殊參數值:memory:即可,該資料庫只存在於記憶體中,不會生成本地資料庫文件。只要使用如下所示的特殊的關鍵定即可。
conn = sqlite3.connect(':memory:')
記憶體資料庫速度更快,可以在不產生文件的情況下,實現臨時性的SQL運算,屬於一次性消費。