Schema migration made easy
Project description
dbschema is a tool to run MySQL or PostgreSQL migrations automatically. Using a table, it keeps a state of previous migrations to avoid duplicates.
Features:
- Support for MySQL and PostgreSQL
- Optional pre and post-migration queries (for example to update privileges)
- Multiple migrations in multiple databases can be processed as one.
Installation
Install dbschema
pip3 install dbschema
Create a config file
Create the file ~/.dbschema.yml and add your databases configuration. See example
Create migrations table
dbschema uses a table called migrations_applied to keep track of migrations already applied to avoid duplication. See the schema for MySQL or PostgreSQL.
Migrations folder structure
For each database, you need to have a migration path (setting path in the migration file).
Within that path you need to create one folder per migration. This folder must contain a file called up.sql with the SQL queries and optionally a file called down.sql for rollbacks.
/path/to/migrations/db1/ |-- migration1/ | |-- up.sql | |-- down.sql |-- migration2/ | |-- up.sql |... /path/to/migrations/db2/ |-- migration1/ | |-- up.sql |-- migration2/ | |-- up.sql | |-- down.sql |...
Usage
Apply pending migrations
dbschema # or to specify a config file path dbschema --config /path/to/config.yml # or to migrate only a specific database dbschema --tag db1
Rollback
dbschema --tag db1 --rollback migration1
Example
$ 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 $
Project details
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size dbschema-1.2.1-py2.py3-none-any.whl (7.1 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View hashes |
Filename, size dbschema-1.2.1.tar.gz (4.8 kB) | File type Source | Python version None | Upload date | Hashes View hashes |
Hashes for dbschema-1.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c98eef46a2256ac4420c40d349a57714125cf3f7c43ac6b66a221a7c1d8d1a7 |
|
MD5 | 02a7817a75d44a84e785bda4a9930551 |
|
BLAKE2-256 | 06ec4bcdb74bac613cb1dc4476639932fbbe158281f1466328fbf5beddf902f3 |