8 Star 161 Fork 27

guolong / dbfaker

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
自定义方法使用说明.md 3.74 KB
一键复制 编辑 原始数据 按行查看 历史
guolong 提交于 2020-10-19 18:27 . 文档更新

前言

有时候对于不同的项目数据库中字段的生成方式多样,对于那些无法使用内置方法来实现的字段可以自己写 生成规则。下面就说下dbfaker如何加载自定义方法。

步骤

1. 初始化项目

使用命令来创建一个dbfaker项目,项目名为目录名

dbfaker init --project_name myproject
cd myproject

创建成功后会在当前目录下生成一个myproject的目录,目录结构如下:

(venv) guolong@guolong-PC:~/PycharmProjects/dbfaker-test/dbfaker-project$ tree
.
├── data
│   └── sample.yml
├── log
│   └── dbfaker.log
├── readme.md
└── script  # 自定义生成规则Python文件所在目录
    ├── __pycache__
    │   └── sample.cpython-37.pyc
    └── sample.py

4 directories, 5 files
(venv) guolong@guolong-PC:~/PycharmProjects/dbfaker-test/dbfaker-project$ ls -la
总用量 24
drwxr-xr-x 5 guolong guolong 4096 10月 19 18:10 .
drwxr-xr-x 6 guolong guolong 4096 10月 19 18:10 ..
drwxr-xr-x 2 guolong guolong 4096 10月 19 18:12 data
drwxr-xr-x 2 guolong guolong 4096 10月 19 18:10 log
-rw-r--r-- 1 guolong guolong  300 10月 19 18:10 readme.md
drwxr-xr-x 3 guolong guolong 4096 10月 19 18:10 script

2. 编写你的字段生成规则

在项目目录下的script目录下新建一个Python文件,文件名自定义(需以.py结尾),文件中添加一个继承自faker.BaseProvider的子类;类方法即为自定义的方法。

# 示例Python方法,一个对字符串进行md5加密的方法
cat script/sample.py
from faker.providers import BaseProvider
import hashlib


class MProvider(BaseProvider):
    def md5(self, value: bytes):
        if isinstance(value, str):
            value = value.encode()
        return hashlib.md5(value).hexdigest()

你可以在这个示例文件中继续添加自定义方法,也可以新起一个Python文件,继承faker.BaseProvider类即可!

3. 编写yaml文件,在文件中引用你写的方法

package: []
env: {}
tables:
- table: t_sys_user
  comment: 用户表
  columns:
  - column: id
    comment: uuid
    engine: null
    rule: null
  - column: username
    comment: 用户账号
    engine: phone_number
    rule: null
  - column: password
    comment: 用户密码
    engine: md5  # 这里引用了自定义的md5方法,对密码“password”进行md5加密处理
    rule: 
      value: 'password'
  - column: type
    comment: 账号类型 password-普通账号 bjnews - 公众号
    engine: eq
    rule: 
      value: password
extraction: {}

4. 生成/插入数据库

# 在项目目录下(script目录的所在目录)执行命令
(venv) guolong@guolong-PC:~/PycharmProjects/dbfaker-test/dbfaker-project$ dbfaker data/sample.yml -p
py:  sample.py
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 54.40条/s]
INSERT `stu` (`id`,`name`,`idcard`,`age`,`sex`,`pwd`) VALUES ('85d764c4f73e423da533f90726cde000','杨宇','330881194609236782','74','female','e10adc3949ba59abbe56e057f20f883e');
INSERT `course` (`id`,`stu_id`,`course_name`,`course_time`) VALUES ('c608213264ae4c36ac3eaa6e87b2a144','85d764c4f73e423da533f90726cde000','化学','2020-10-19 18:24:50');
执行完成,共生成1组数据
Python
1
https://gitee.com/guojongg/dbfaker.git
git@gitee.com:guojongg/dbfaker.git
guojongg
dbfaker
dbfaker
master

搜索帮助