配置化資料填充框架

梧桐樹下發表於2021-04-14

概述

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. 效果如下

1567489373143

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章