Tool for manage migrations in your project.
pip install migranite
If you want to use MongoDB as database for migrations:
pip install 'migranite[mongo]'
To initialize the migranite in your project run:
migranite init --migrations migrations_dir --templates templates_dir
This command creates the settings file (.migranite
) and two directories (migrations_dir
and templates_dir
).
Create the first migration:
migranite create my-first-migration
This is create the file migrations_dir/001-my-first-migration.py
with an empty migration.
You need to write a module docstring and implement function run()
with your migration logic.
Show the available migrations with statuses:
migranite list
Run all migrations that haven't been started earlier:
migranite run
Run only specified migrations:
migranite run my-first-migration
Run the migrations that were started earlier:
migranite run --force my-first-migration
A config file is a simple ini-file with three sections.
Migrations settings.
path: | Path to directory with migrations. |
---|---|
digits: | Number of digits in migration number. Default 3 . |
Templates settings.
path: | Path to directory with templates. |
---|---|
default: | Default template file name. |
Database settings. Currently only JSON file and MongoDB is supported.
backend: | Type of database backend (json or mongo ). |
---|
Other settings are backend-specified.
json
path: | path to json file. |
---|
mongo
host: | Hostname or ip address. Default localhost . |
---|---|
port: | Default 27017 . |
name: | Name of database. Required. |
collection: | Name of collection. Default migrations . |
All paths in config and command arguments can be relative from python packages. Use :
, Luke!
Example:
[migrations]
path = "my_project:migrations"
[templates]
path = "migrations_templates"
default = "default.py"
[database]
backend = "json"
path = "~/migrations.json"
Will look for migrations in the directory migrations
in python package my_project
.
Use this feature on production is good practice.
- Rename
--config
argument to--settings
; - Use zini as settings format;