A database migration engine for Peewee, inspired by the architecture of Django migrations.
Miggy builds a state from your migrations and automatically generates a diff against the current model state to create a migration.
Miggy supports detecting changes to most Peewee classes used to define a table, including fields, indexes, primary keys, DEFAULT and CHECK constraints.
pip install miggy
Since the original project has not been actively maintained for some time, this project started as a fork of the original peewee_migrate by klen — many thanks to them for the initial work!
Since the fork, the project has been significantly reworked. The architecture has been almost completely redesigned, numerous bugs have been fixed, and support for many Peewee schema features has been added.
Getting help:
$ miggy --help
Usage: miggy [OPTIONS] COMMAND [ARGS]...
Options:
--config PATH Path to the config file. Defaults to miggyconf.py in the
current directory. [env var: MIGGY_CONFIG]
--help Show this message and exit.
Commands:
create Create a migration.
init Create a default configuration file.
list List migrations.
makemigrations Create a migration automatically
merge Merge migrations into one.
migrate Migrate database.
rollback Rollback a migration with given name or number of last...
from miggy import Router
from peewee import SqliteDatabase
router = Router(SqliteDatabase('test.db'))
# Create migration
router.create('migration_name')
# Run migration/migrations
router.run('migration_name')
# Run all unapplied migrations
router.run()
By default, migration files are looked up in config_path/migrations
directory, but custom directory can be given.
Migration files are sorted and applied in ascending order per their filename.
Each migration file must specify migrate() function and may specify
rollback() function:
def migrate(migrator, database, fake=False, **kwargs):
pass
def rollback(migrator, database, fake=False, **kwargs):
pass
Install dependencies using pip:
pip install -e .[dev]Run databases:
docker-compose up -dRun checks and tests:
poe checkLicensed under a BSD license.