数据库迁移工具
项目描述
dbupgrade
数据库迁移工具
基本用法
用法: dbupgrade [OPTIONS] [-l API_LEVEL|-L] DBNAME SCHEMA DIRECTORY
使用SQL脚本从DIRECTORY
升级指定为DBNAME
的数据库中的SCHEMA
。 DIRECTORY
将搜索所有具有.sql
后缀的文件。这些文件是具有特殊标题部分的SQL脚本
-- Schema: my-db-schema
-- Version: 25
-- API-Level: 3
-- Dialect: postgres
CREATE TABLE ...
以下标题是必需的
- 模式
要更新的模式名称。 - 方言
此脚本的数据库方言。使用SQLAlchemy的数据库URL方案标识符,例如postgres
或sqlite
。 - 版本
应用此脚本后的新模式版本。如果两个脚本具有相同的模式、方言和版本,则为错误。 - API级别
应用此脚本后的新模式API级别。对于给定模式,后续版本的API级别必须等于或比前一个版本的API级别高一级。例如,如果脚本版本44的API级别为3,则脚本版本45必须具有API级别3或4。 - 事务 (可选)
可能的值是yes
(默认)和no
。当此头为 yes 时,单个升级文件及其对应的版本升级语句将在单个事务中执行。否则,每个语句将单独执行。前者通常更可取,以便在脚本无法应用时,所有更改都将回滚,但在某些情况下后者是必需的。
数据库必须包含一个具有三个列 schema
、version
和 api_level
的 db_config
表。如果此表不存在,则创建它。此表必须为给定模式包含恰好一行。如果此行不存在,则创建它,将版本和 api_level 初始值设置为 0。
从数据库请求模式当前版本和 API 级别,并按顺序应用所有版本号更高的脚本。如果缺少任何版本号,则脚本将在缺少版本号之前的最后一个版本后停止。
除非提供 -l
或 -L
选项,否则只会应用不增加 API 级别的脚本。如果提供 -l
选项,则将应用所有达到指定 API 级别的脚本。-L
将应用不考虑 API 级别的所有脚本。
每个脚本都在单独的事务中执行。如果脚本失败,该脚本中的所有更改将被回滚,脚本将带错误信息和非零返回状态停止。
JSON 输出
当提供 --json
选项时,dbupgrade
将有关已应用脚本的 JSON 信息输出到标准输出。示例输出
{
"success": true,
"oldVersion": {
"version": 123,
"apiLevel": 15
},
"newVersion": {
"version": 125,
"apiLevel": 16
},
"appliedScripts": [
{
"filename": "0124-create-foo.sql",
"version": 124,
"apiLevel": 15
},
{
"filename": "0125-delete-bar-sql",
"version": 125,
"apiLevel": 16
}
],
"failedScript": {
"filename": "0126-change-stuff.sql",
"version": 126,
"apiLevel": 16
}
}
success
如果所有脚本都已成功应用或没有要应用的脚本,则为 true
。在这种情况下,不定义 failedScript
键。始终定义 appliedScripts
键。如果没有应用脚本,则它是一个空数组。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。
源分布
dbupgrade-2023.10.0.tar.gz (12.0 kB 查看散列)
构建分布
dbupgrade-2023.10.0-py3-none-any.whl (14.1 kB 查看散列)
关闭
dbupgrade-2023.10.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0cb037a238f0aae6791b58173e4105bebfa160cf1ef2dc0a811fea0b66c8a53a |
|
MD5 | 3967eb45a8a6c3e168ee2d334c85fd9f |
|
BLAKE2b-256 | 660799e1e91808e6d2eab2c574171e384c2dba8f4248fbaaccf711a608cac7af |