清理数据库的内容。
database-sanitizer的Python项目详细描述
数据库卫生工具
database-sanitizer
是一个从
关系数据库并对检索到的数据执行清理
根据配置文件中定义的规则。目前
卫生工具同时支持PostgreSQL和MySQL数据库
安装
database-sanitizer
可以使用pip从PyPI安装,如下所示:
$ pip install database-sanitizer
如果您使用的是mysql,那么您需要安装这样的包 而是包括附加要求:
$ pip install database-sanitizer[MySQL]
用法
一旦安装了包,就可以使用database-sanitizer
像这样:
$ database-sanitizer <DATABASE-URL>
需要提供命令行参数DATABASE-URL
,以便
知道如何从数据库中检索转储有了PostgreSQL,
可能是这样的:
$ database-sanitizer postgres://user:password@host/database
但是,除非提供配置文件,否则将不会 对检索到的数据库转储执行,这将导致我们进入下一个 部分将是
配置
卫生规则可以在用
YAML。然后将配置文件的路径指定给命令行
参数为--config
的实用程序(缩写为-c
)如下:
$ database-sanitizer -c config.yml postgres://user:password@host/database
配置文件使用以下语法:
config:addons:-some.other.package-yet.another.packageextra_parameters:# These parameters will be passed to the dump tool CLImysqldump:-"--single-transaction"# Included by defaultpg_dump:-"--exclude-table=something"strategy:user:first_name:name.first_namelast_name:name.last_namesecret_key:string.emptyaccess_log:skip_rows
在上面的示例配置中,首先列出了两个“addon
packages“,这是python包的名称,其中消毒剂将
正在寻找消毒剂的功能。它们是完全可选的,可以
省略,在这种情况下,只有在包中定义的消毒剂函数
调用sanitizers
并使用内置消毒剂。
还可以定义额外的参数以传递给转储工具(
mysqldump
或pg_dump
)。默认情况下,mysqldump
将包括
--single-transaction
额外参数您可以通过定义
配置文件中显式的额外参数,例如使用空数组[]
。
配置的strategy
部分包含
卫生规则。首先定义数据库表的名称(在
后面跟表中列名的示例是user
每个映射到卫生功能名称的名称
卫生功能由两部分组成
点:python模块的名称和实际函数的名称,它将
前缀为sanitize_
,因此name.first_name
将是一个函数
在名为name.py
的文件中调用sanitize_first_name
。
通过
将表策略设置为skip_rows
(在
示例配置)这将忽略所有INSERT INTO
(mysql)或COPY
(postgresql)清除转储文件中的语句。CREATE TABLE
不会删除语句。