I have used South migrations previously, but am now searching for a database migration tool that's not tied to particular framework or Object Relational Mapper (South is perfect for Django). I want it really for controlling schema updates (and rollbacks) and little else. Various tools and programs make use of the same database, so I would like a devoted tool to handle the schema and never get it integrated using the ORM of 1 particular web-application that may make use of the shared DB.

Edit: To clarify, I don't require a tool that reads changes to models within an application and creates the schema updates for me personally. I would like something that utilizes migrations and is applicable updates and rollbacks on request, but where I clearly write the update and rollback actions myself. Essentially a much better handled, and slightly abstracted version of sourceing .sql scripts to complete schema upgrades.

Ideally Python-based, as that's exactly what the team knows, the tool needs to utilize MySQL but would hopefully also provide some abstraction for other RDBMS backends.

Clearly I possibly could look for a couple of myself, but Let me harness the expertise of the city here to shortcut the procedure just a little by gathering some "reviews" from general observations while using tools in real life situations:

  • Do you know the good stuff concerning the solution?
  • Do you know the issues and problems you've experienced by using it?
  • Could it be positively developed, is there a great community, support etc?

To date I have found yoyo-migrations which looks promising, but no info from anybody utilizing it.

You could look at Liquibase - it's java-based but migrations are defined within an XML DSL so no understanding of java is needed.

We've not tried on the extender in anger but they are presently evaluating it.

Because you requested python, im gonna do shameless self advertising:


its designed in python, but uses raw sql (so no abstraction). essentially it simply keeps track, which migrationscripts continues to be performed, however in many projects of mine, this really is enough.

It's unfortunate the majority of the migration libs are combined to frameworks. I have wound up using enumerated .sql files because I did not find anything helpful after i began. I have since found, but haven't used http://code.google.com/p/sqlalchemy-migrate/. It's associated with SQLAlchemy, but a minimum of it's abstracted using their company libs.

I personally use follow up to complete my migrations, I apply it Java based and rails based so it's framework agnostic.

It features a great little DSL for migrations with up and lower, and you will even do raw SQL if you want.

why don't you writing a custom migration tool with python db api ? http://www.python.org/dev/peps/pep-0249/ or use something such as schema sync? http://schemasync.org/

South appears pretty functional. Perhaps you have looked whatsoever underneath the covers to ascertain if what it really does (some library possibly) might be removed and wrapped around? It appears to stay in Python, therefore it should work already.

Also, has anybody attempted http://chronicdb.com