Djangoでdb接続情報を複数設定する

普通にdjangoプロジェクトを作成するとdb設定の初期値は以下のようになってます

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

DATABASESは辞書になってるので'default'以外にも名前をつけてやれば複数設定することができますね。
適当に'another'を設定してみました。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'default.db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    },
    'another': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'another.db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}


適当にモデルを作成して、syncdbしたら、default.dbにテーブルが作成されました。
another.dbのほうにテーブルを作成するには、--databaseオプションでデータベース名を指定します

$ python manage.py syncdb --database=another


djangoのormでデータの取得や保存を行う場合は、以下のようにusing関数を使って、対象のdbを指定します

>>> from apps.models import Book
>>> Book.objects.using('default').create(title=u'Python プロフェッショナルプログラミング')
Out[21]: <Book: Book object>
>>> Book.objects.using('default').all()
Out[22]: [<Book: Book object>]
>>> Book.objects.using('another').all()
Out[23]: []


cursorを使う場合はconnectionsから名前を指定してconnectionを取得して、そこからcursorを取得します

>>>from django.db import connections
>>> con = connections['another']
>>> cursor = con.cursor()
>>> cursor.execute('select  * from apps_book')
Out[30]: <django.db.backends.sqlite3.base.SQLiteCursorWrapper at 0x1049802b0>
>>> cursor.fetchall()
Out[32]: []