Skip to content
kalombosPublic

About

Simple migration engine for Peewee

Resources

Stars

19 stars

Watchers

1 watching

Forks

 
 

Repository files navigation

Miggy

CI workflow PyPi Version

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.

New to Miggy?

Installation

pip install miggy

Why Fork?

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.

Usage

From shell

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 python

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()

Migration files

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

Developing

Install dependencies using pip:

pip install -e .[dev]

Run databases:

docker-compose up -d

Run checks and tests:

poe check

License

Licensed under a BSD license.

About

Simple migration engine for Peewee

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages