架构迁移变得简单
dbschema的Python项目详细描述
dbschema是运行MySQL或PostgreSQL迁移的工具 自动使用表,它保持以前迁移到的状态 避免重复
功能:
- 支持MySQL和PostgreSQL
- 可选的迁移前和迁移后查询(例如更新 特权)
- 多个数据库中的多个迁移可以作为一个处理
安装
安装dbschema
# Install required packages
apt-get update
apt-get install --yes libpq-dev gcc python3-dev
pip3 install dbschema
创建配置文件
创建文件~/.dbschema.yml并添加数据库 配置。See example
创建迁移表
dbschema使用名为migrations_applied的表来跟踪 已应用迁移以避免重复请参阅的架构 MySQL或PostgreSQL。
迁移文件夹结构
对于每个数据库,都需要有一个迁移路径(设置path 在迁移文件中)。
在该路径中,每次迁移都需要创建一个文件夹这个 文件夹必须包含一个名为up.sql的文件,其中包含SQL查询和 对于回滚,可以选择名为down.sql的文件。
/path/to/migrations/db1/ |-- migration1/ | |-- up.sql | |-- down.sql |-- migration2/ | |-- up.sql |... /path/to/migrations/db2/ |-- migration1/ | |-- up.sql |-- migration2/ | |-- up.sql | |-- down.sql |...
用法
应用挂起的迁移
dbschema # or to specify a config file path dbschema --config /path/to/config.yml # or to migrate only a specific database dbschema --tag db1
回滚
dbschema --tag db1 --rollback migration1
示例
$ dbschema * Applying migrations for db1 (`test` on postgresql) -> Migration `migration1` applied -> Migration `migration2` applied -> Migration `migration3` applied * Migrations applied * Applying migrations for db2 (`test` on mysql) -> Migration `migration1` applied -> Migration `migration2` applied -> Migration `migration3` applied * Migrations applied $ $ dbschema --tag db2 --rollback migration1 * Rolling back mysql -> `migration1` -> Migration `migration1` has been rolled back $