Skip to main content

Schema Evolution for Peewee

Project description

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.

Quick Start

  1. Run: sudo pip install git+git://github.com/keredson/peewee-db-evolve.git
  2. Add import peeweedbevolve anywhere before your models are defined.
  3. Run db.evolve() where you would have normally run db.create_tables(), and enjoy!

Example

See our Hello World example.

image

image

Supported Databases

  • PostgreSQL
  • MySQL

Frequently Asked Questions

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?

I wrote this in August 2016, but it’s a port of a tool I’ve been using for ~10 years now. (Called deseb, funded by Google’s Summer of Code project in 2006, written for Django’s ORM.) There is also a version for Ruby on Rails, which has been used daily in production for ~1.5 years now. (We’re switching to Peewee, hence why I’m doing this port.)

Tests

How to run:

$ python test.py PostgreSQL
..............................
----------------------------------------------------------------------
Ran 30 tests in 22.421s

OK

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
peewee-db-evolve-0.4.0.tar.gz (8.4 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page