複数データベースへの同時アクセスについて

89 views
Skip to first unread message

Morimoto Tetsuya

unread,
Jul 8, 2009, 12:57:44 PM7/8/09
to djan...@googlegroups.com
森本です。

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 テーブルに持てなくて良いという意図があります。

説明が分かり難くて本当に申し訳ないのですが、
このような事を実現する事は可能なのでしょうか?
または、他にもっと良い方法がある、
そもそも私が大きな勘違いをしている等ありましたら、
何でも結構ですので、ご指摘して頂けると幸いです。

以上、宜しくお願いします。

Morimoto Tetsuya

unread,
Jul 9, 2009, 12:29:06 PM7/9/09
to djan...@googlegroups.com
森本です。

自己レスです。
無理やりですが、見た目上は動きました。

添付パッチで 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> さんは書きました:

multi_mysql_database.patch

Morimoto Tetsuya

unread,
Jul 9, 2009, 9:08:14 PM7/9/09
to djan...@googlegroups.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> さんは書きました:

岡野 機械36期

unread,
Jul 9, 2009, 9:48:29 PM7/9/09
to django-ja
岡野です。

djangoのO/Rマッパーを使わずにSQLAlchemyを使うという手もあります。

参考
http://d.hatena.ne.jp/perezvon/20070826/1188116612
Reply all
Reply to author
Forward
0 new messages