Django 1.2 brings multiple databases handling through the use of database routers. The actual version of South (0.7.3) is not able to handle correctly multiple databases projects out of the box.

Here is a workaround: the idea is to create a new fake django project. And then to use South migration within this project.

 cd head_directory startproject my_south_db_project
 cd my_south_db_project

Next,edit my_south_db_project/

  • we have to set the path correctly to south, to your app and to the corresponding database
  • The only installed apps should be South and your app
 import sys
 import os.path
 current_path = os.path.abspath(os.path.dirname(_ _file_ _))
 head, tail = os.path.split(current_path)
 sys.path.append(os.path.join(head, "my_db_app_dir"))
 sys.path.append(os.path.join(head, "south_sdir"))
 dbpath = os.path.join(head, "my_initial_project_dir")
   'default': {
       'ENGINE': 'django.db.backends.sqlite3',
       'NAME' : os.path.join(dbpath,'my_db_app.sqlite')
       'USER': '',
       'PASSWORD': '',
       'HOST': '',
       'PORT': '',

Create south table in the new db

 ./ syncdb

Now you can work in this project to manage your apps related to this new db convert_to_south my_db_app

on other computers migrate my_db_app 0001 --fake

modify schemamigration my_db_app --auto migrate my_db_app

As you can see, this way you keep the standard South workflow !

Edit: I use this line in the main project's in order to be able to launch tests: