Version track, automate DB schema changes with django Version track, automate DB schema changes with django database database

Version track, automate DB schema changes with django


There are at least two third party utilities to handle DB schema migrations, South and Django Evolution. I haven't tried either one, but I have heard some good things about South, though Evolution has been around a little longer.

Also, look at SchemaEvolution on the Django wiki. It is just a wiki page about migrating the db.


Last time I checked (version 0.97), syncdb will be able to add tables to sync your DB schema with your models.py file, but it cannot:

  • Rename or add a column on a populated DB. You need to do that by hand.
  • Refactorize your model (like split a table into two) and repopulate your DB accordingly.

It might be possible though to write a Django script to make the migration by playing with the two different managers, but that might take ages if your DB is large.


There was a panel session on DB schema changes at the recent DjangoCon; there is a video of the session (thanks to Google), which should provide some useful information on a number of these utilities.