Diffs your models against your database, and outputs SQL to (non-destructively) update your schema.
Think of it as db.create_tables()
on steriods (which doesn't drop your database).
You can also think of it as schema migrations, without having to actually write the migrations.
- Run:
sudo pip install peewee-db-evolve
- Add
import peeweedbevolve
anywhere before your models are defined. - Run
db.evolve()
where you would have normally rundb.create_tables()
, and enjoy!
See our Hello World example.
- PostgreSQL
- MySQL
Does this work with existing projects, or only with new projects?
This works very well with existing projects. If your API only works with new projects, you're probably doing it wrong.
Don't you give up control by not writing your own migrations?
Managing your schema by writing your own migrations is kind of like managing your source code by writing your own patch
files in addition to writing your actual code. A well vetted diff
tool is going to be better and faster at it than you.
How old / well vetted is this tool?
This project has been in production use since August 2016. (We switched to Peewee as an ORM.) But it's a style of schema management I've been using for ~10 years now.
How to run:
$ python test.py PostgreSQL
..............................
----------------------------------------------------------------------
Ran 30 tests in 22.421s
OK