Schema migration made easy
Project description
# dbschema
`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`
```bash
pip3 install dbschema
```
### Create a config file
Create the file `~/.dbschema.yml` and add your databases configuration. [See example](dbschema_sample.yml)
### 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](schema/mysql.sql) or [PostgreSQL](schema/postgresql.sql).
## 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
```bash
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
```bash
dbschema --tag db1 --rollback migration1
```
## Example
```bash
$ 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
$
```
`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`
```bash
pip3 install dbschema
```
### Create a config file
Create the file `~/.dbschema.yml` and add your databases configuration. [See example](dbschema_sample.yml)
### 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](schema/mysql.sql) or [PostgreSQL](schema/postgresql.sql).
## 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
```bash
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
```bash
dbschema --tag db1 --rollback migration1
```
## Example
```bash
$ 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 | 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
dbschema-1.2.4.tar.gz
(4.7 kB
view hashes)
Built Distribution
Close
Hashes for dbschema-1.2.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e3a5d864b6e1f493b1873502ea2af44c399c3389936cde8a04b7a4596fbf100 |
|
MD5 | ab37a8380ba0e1054e368f6b1138a069 |
|
BLAKE2b-256 | c758318b5b9d1372b6801b0b9abcf065cb6e877a5aab58a39ce7445a7bf4515e |