south / docs / about.rst

About South

South brings migrations to Django applications. Its main objectives are to provide a simple, stable and database-independent migration layer to prevent all the hassle schema changes over time bring to your Django applications.

We try to make South both as easy-to-use and intuitive as possible, by making it automate most of your schema-changing tasks, while at the same time providing a powerful set of tools for large or complex projects; you can easily write your own migrations by hand, or even use the database altering API directly.

While South started as a relative unknown in the Django database-schema-altering world, it has slowly risen in popularity and is now widely regarded as the most popular schema migration tool for Django.

Key features

South has a few key features:

  • Automatic migration creation: South can see what's changed in your file and automatically write migrations that match your changes.
  • Database independence: As far as possible, South is completely database-agnostic, supporting five different database backends.
  • App-savvy: South knows and works with the concept of Django apps, allowing you to use migrations for some of your apps and leave the rest to carry on using syncdb.
  • VCS-proof: South will notice if someone else commits migrations to the same app as you and they conflict.

A brief history

South was originally developed at Torchbox in 2008, when no existing solution provided the workflow and features that were needed. It was open-sourced shortly thereafter, and quickly gained steam after the Schema Evolution panel at DjangoCon 2008.

Sometime in 2009, it became the most popular of the various migration alternatives, and seems to have been going strong ever since. While there have been growing calls to integrate South, or something like it, into Django itself, such an integration has not yet been made, mostly due to the relative immaturity of database migration solutions.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.