架构迁移变得简单

dbschema的Python项目详细描述


PypiBuild StatuscodecovMIT licensed

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的表来跟踪 已应用迁移以避免重复请参阅的架构 MySQLPostgreSQL

迁移文件夹结构

对于每个数据库,都需要有一个迁移路径(设置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
$

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
由于测试失败,java testcontainers maven构建失败   java实现jacobi算法实现laplace方程   java中的多线程:如何在不等待所有线程使用ExecutorService完成任务的情况下终止所有线程的执行?   java Hello World不在Android Studio 3中工作   ubuntu Tomcat7的Java版本不正确   java Javafx内存泄漏   对于手动实现的Spring数据存储库方法,我应该使用Java8默认方法吗?   googleappengine中的java添加过滤查询   html当使用JSOUP库在Java中读取标签时,如何保留标签(如<br>、<ul>、<li>、<p>等)的含义?   编码为什么jasper生成的报告在Java中不显示西里尔语(保加利亚语)?   java有没有办法隐藏当前位置和jdk动作?   java找出编译原型文件的版本   有没有办法在运行时更改java方法的访问修饰符?   语法字符串。。。Java中的参数   java数组元素在添加其他元素时会相互覆盖   eclipse中的java GWT项目   java如何为spring rest模板请求将动态json属性名映射到jackson   java无法在Windows 10上找到特定的JDK   在xml字符串和java字符串之间提取正则表达式子字符串