Database Migration Tool
Project description
dbupgrade
Database Migration Tool
Basic Usage
Usage: dbupgrade [OPTIONS] [-l API_LEVEL|-L] DBNAME SCHEMA DIRECTORY
Upgrade the given SCHEMA
in the database specified as DBNAME
with SQL
scripts from DIRECTORY
. DIRECTORY
is searched for all files with the
.sql
suffix. These files are SQL scripts with a special header sections:
-- Schema: my-db-schema
-- Version: 25
-- API-Level: 3
-- Dialect: postgres
CREATE TABLE ...
The following headers are required:
- Schema
Name of the schema to update. - Dialect
Database dialect of this script. Use SQLalchemy's database URL scheme identifier, e.g.postgres
orsqlite
. - Version
The new version of the schema after this script was applied. It is an error if two scripts have the same schema, dialect, and version. - API-Level
The new API level of the schema after this script was applied. For a given schema, the API level of a subsequent version must either be equal or higher by one than the API level of the preceding version. For example, if script version 44 has API level 3, script version 45 must have API level 3 or 4. - Transaction (optional)
Possible values areyes
(default) andno
. When this header is yes, all statements of a single upgrade file and the corresponding version upgrade statements are executed within a single transaction. Otherwise each statement is executed separately. The former is usually preferable so that all changes will be rolled back if a script fails to apply, but the latter is required in some cases.
The database must contain a table db_config
with three columns: schema
,
version
, and api_level
. If this table does not exist, it is created.
This table must contain exactly one row for the given schema. If this row
does not exist, it is created with version and api_level initially set to 0.
The current version and API level of the schema are requested from the database and all scripts with a higher version number are applied, in order. If there are any version numbers missing, the script will stop after the last version before the missing version.
Unless the -l
or -L
option is supplied, only scripts that do not
increase the API level will be applied. If the -l
option is given, all
scripts up to the given API level will be applied. -L
will apply all
scripts without regard to the API level.
Each script is executed in a seperate transaction. If a script fails, all changes in that script will be rolled back and the script will stop with an error message and a non-zero return status.
JSON Output
When supplying the --json
option, dbupgrade
will information about the
applied scripts as JSON to the standard output. Sample output:
{
"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
is true
if all scripts were applied successfully or no scripts
were to be applied. In this case, the failedScript
key is not defined.
The appliedScripts
key is always defined. In case no scripts were applied,
it's an empty array.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dbupgrade-2023.10.0.tar.gz
.
File metadata
- Download URL: dbupgrade-2023.10.0.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.2 Linux/6.2.0-33-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cb037a238f0aae6791b58173e4105bebfa160cf1ef2dc0a811fea0b66c8a53a |
|
MD5 | 3967eb45a8a6c3e168ee2d334c85fd9f |
|
BLAKE2b-256 | 660799e1e91808e6d2eab2c574171e384c2dba8f4248fbaaccf711a608cac7af |
File details
Details for the file dbupgrade-2023.10.0-py3-none-any.whl
.
File metadata
- Download URL: dbupgrade-2023.10.0-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.2 Linux/6.2.0-33-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b07b5ac9af7d68c33a54d6d99d6d8f884273c6ff8ab80880b09f82f8250b094 |
|
MD5 | b1d2ff615491c80c8417339a91842b5d |
|
BLAKE2b-256 | 97b3a3c187841f2f3521ed163c0e60a8cd2fa26efeb591fa8eb8c411c6bc8c18 |