概述
ivy是一個配置化的資料填充框架,主要解決的場景
1. 幫助你更好的去處理開發專案前無資料的尷尬
2. 擺脫手動建立資料庫和資料表的繁瑣工作
3. 快速生成資料後臺所要的模擬資料,幫助你更快編寫資料統計的邏輯開發
採用配置化的模式,使工作更加高效。配置多個主機模擬資料只要在檔案配一下,就能夠實現你想要的效果。
核心思想是解放勞動力,讓你能夠在不編寫或最少寫程式碼的情況下完成填充的任務
程式碼結構:
+---config // 批次操作配置檔案目錄
+---ivy
| +---abstracts // 介面類目錄
| +---functions // 生成隨機數的函式目錄
| +---manages // 具體邏輯實現管理目錄
+---readme // 文件目錄
要求
Python3+
Works on Linux, Windows, Mac OSX, BSD
文件
自定義填充函式
在 functions
目錄下編寫相關程式碼即可。
__init__.py
# -*- coding: utf-8 -*-
from ivy.functions.date import Date
from ivy.functions.default import Default
funcs = {
'range_date': Date().range,
'default': Default().default
}
然後編寫相關類即可,可參考 default.py
檔案
default.yml 配置檔案(遵循yaml語法)
主要做兩個功能:
1. 配置實現資料庫,資料表自動建立
2. 填充資料,高度支援faker庫
配置檔案直接寫在 config
目錄就可以了,不過要注意這裡只認識 .yml
字尾的配置檔案哦。所以只要定義了
yml的檔案都會被執行的哦
栗子:
-
host: 127.0.0.1
port: 3306
username: root
password: root
charset: utf8mb4
dbname: faker
databases:
-
table: faker
fields:
id: INT NOT NULL AUTO_INCREMENT
name: VARCHAR(20) NOT NULL
date: timestamp NOT NULL
index:
- PRIMARY KEY (id)
other:
- ENGINE=InnoDB
- DEFAULT
- CHARSET=utf8mb4
rules:
date:
func: range_date
start: '2019-07-20'
end: '2019-08-20'
res_format: '%Y-%m-%d %H-%M-%S'
step: HOUR_TO_SECOND
name:
func: default
value: test
number: 100000
chunk: 100
tips:
- 這裡面使用陣列的形式進行配置,每個陣列對應一個伺服器地址,
想要填充多個伺服器上面的資料庫就需要對其進行陣列配置
host: 資料庫伺服器ip
port: 資料庫伺服器埠
username: 資料庫使用者名稱
password: 資料庫密碼
charset: 編碼
dbname: 建立的資料庫名
databases: 資料庫表陣列
table: 資料表名
fields: 資料表欄位
index: 資料表索引
other: 資料表外層engine這些
rules: 資料庫填充的內容設定
number: 要填充的總數量
chunk: 每組批次插入的數量,避免記憶體溢位 (每次插入數量 = number / chunk)
- 填充的規則定義如下
1. 自定義的處理函式要在 ivy/functions/__init__.py
中定義函式名稱,就是用在配置中的 func
哦。
rules:
date:
func: range_date
start: '2019-07-20'
end: '2019-08-20'
res_format: '%Y-%m-%d %H-%M-%S'
step: HOUR_TO_SECOND
name:
func: default
value: test
2. faker
庫的呼叫,這裡面要直接帶上 faker
字首,然後用|來對其進行分割,這裡面不允許使用空格。然後後面帶上faker
庫中的函式呼叫就行了。例如上面例子中,直接使用 name
這個函式呼叫。具體還可以使用什麼函式參考 faker
庫的官網
faker.readthedocs.io/en/master/loc...
- 使用
1. 安裝需要使用的庫
pip install -r requirements.txt
2. 配置padding_data.yml檔案,這裡按照yaml語法配置就可以了
3. 生成資料庫並填充資料
python entry.py
4. 效果如下
本作品採用《CC 協議》,轉載必須註明作者和本文連結