数据库迁移工具
dbupgrade的Python项目详细描述
dbupgrade
数据库迁移工具
用法:dbupgrade [OPTIONS] [-l API_LEVEL|-L] DBNAME SCHEMA DIRECTORY
用sql升级指定为DBNAME
的数据库中给定的SCHEMA
来自DIRECTORY
的脚本。DIRECTORY
搜索具有
.sql
后缀。这些文件是带有特殊头段的SQL脚本:
-- Schema: my-db-schema-- Version: 25-- API-Level: 3-- Dialect: postgresCREATETABLE...
需要以下标题:
- schema
要更新的架构的名称。 - 方言
这个脚本的数据库方言。使用sqlalchemy的数据库 url方案标识符,例如postgres
或sqlite
。 - 版本
应用此脚本后架构的新版本。 如果两个脚本具有相同的模式、方言和版本,则这是一个错误。 - api级别
应用此脚本后架构的新API级别。 对于给定的架构,后续版本的api级别必须是 等于或高于前一版本的api级别。为了 例如,如果脚本版本44具有API级别3,则脚本版本45必须 API等级3或4。 - 事务(可选)
可能的值是yes
(默认值)和no
。当这个 头是yes,一个升级文件的所有语句和 相应的版本升级语句在单个 交易。否则,每个语句都是单独执行的。前者 通常更可取,以便在以下情况下回滚所有更改: 脚本无法应用,但在某些情况下需要后者。
数据库必须包含一个表db_config
,其中有三列:schema
,
version
,和api_level
。如果此表不存在,则创建该表。
对于给定的架构,此表必须正好包含一行。如果这一排
不存在,它创建的版本和API级别最初设置为0。
架构的当前版本和API级别是从 数据库和具有更高版本号的所有脚本将按顺序应用。 如果缺少任何版本号,脚本将在 丢失版本之前的最后一个版本。
除非提供-l
或-L
选项,否则只有不提供
将应用提高API级别。如果给定了-l
选项,则
将应用到给定api级别的脚本。-L
将应用所有
不考虑api级别的脚本。
每个脚本在单独的事务中执行。如果一个脚本失败,所有 该脚本中的更改将回滚,脚本将停止 错误消息和非零返回状态。