Django で接続するデータベース名は、
settings.py の DATABASE_NAME で指定します。
ここで、開発用サーバを起動した際のみ、
1度だけ settings.py を読み込み、DATABASE_NAME に
設定されたデータベースへ接続しているように見えます。
※ もし、私の勘違いでしたらご指摘ください
以下に、私のやりたい事のイメージを記載します。
複数プロジェクトを扱うプリケーションにおいて、
ログイン時にユーザ情報にプロジェクト ID を持ち、
そのプロジェクト ID に対応するデータベースのテーブルへアクセスしたいです。
例)
プロジェクト: aaa を指定してユーザ: user1 でログイン
- user1 さんは aaa データベースの development テーブルを操作したい
プロジェクト: bbb を指定してユーザ: user2 でログイン
- user2 さんは bbb データベースの development テーブルを操作したい
user1 さんがログインした時には aaa データベースへ接続し、
user2 さんがログインした時には bbb データベースへ接続します。
プロジェクト事にデータベースを分けているのは、
データベースのバックアップ/リストアを容易にするのと、
プロジェクト ID を development テーブルに持てなくて良いという意図があります。
説明が分かり難くて本当に申し訳ないのですが、
このような事を実現する事は可能なのでしょうか?
または、他にもっと良い方法がある、
そもそも私が大きな勘違いをしている等ありましたら、
何でも結構ですので、ご指摘して頂けると幸いです。
以上、宜しくお願いします。
自己レスです。
無理やりですが、見た目上は動きました。
添付パッチで DATABASE_NAME をタプルに変更して、
settings.py を以下にように設定しました。
-- settings.py
DATABASE_NAME = (
'aaa',
'bbb',
)
DATABASE_SELECT_ID = 0
そして、ユーザログイン時に
settings.DATABASE_SELECT_ID
をセットし直すようにしました。
Django からデータベースへの接続は、
開発用サーバの起動時のみではなく、
テーブルへのアクセス時に接続し直しているように見えます。
まだまだよく分かっていないので、
もう少し DB 周りを調査してみます。
2009/07/09 1:57 に Morimoto Tetsuya<tetsuya....@gmail.com> さんは書きました:
本家サイトでも、同様の議論があるのを発見しました。
調査不足でメーリングリストへ質問してしまい、すみませんでした。
http://groups.google.com/group/django-developers/browse_thread/thread/9f0353fe0682b73
http://code.djangoproject.com/wiki/MultipleDatabaseSupport
2009/07/10 1:29 に Morimoto Tetsuya<tetsuya....@gmail.com> さんは書きました: