2012-01-26 8 views
0

私は奇妙なレガシーデータベースユースケースを持っています。(1)まったく同じスキーマですが、(2)非常に異なるデータセットを持つ複数のデータベースがあります。データベースこのスキーマを持つデータベース全体が毎週合計データセットに追加されています。Django: "データベースを表示"機能?

サーバにはというイントロスコープを使用して、利用可能なデータベースがあるかどうかを調べる方法がありますか?そうであれば、(2)現在のURLではなくURLで正しいデータベースにルーティングする方法がありますモデルごとの解決策(私のモデルは変更されないので、関連する基礎となるテーブルのみ)

このイントロスペクションを動的にすることができるので、誰かがホームページにアクセスするたびに、使用可能なデータベースのリストを表示できますか?

もちろん、一般的な解決策が望ましいですが、現在のところMySQLだけの解決策が現在受け入れられています。

(ヨーロッパの分子生物学研究所のゲノムライブラリーのユースケース.MySQLデータベースダンプのスイートとして数ヶ月ごとに公開されています。種ごとに1つのデータベースがあり、コアスキーマは約20個の表になります。スキーマは安定しており、何年も変わっていません)

答えて

1

はい、あなたはrun any raw SQLになり、show databasesは例外ではありません。しかし、使用可能なデータベースのリストを変更したり、それらのデータベースを切り替えるのは難しいでしょう。私はdjangoの内部の修正や猿のパッチが必要になることは恐れています。

更新:お待ちください! django.db.connectionsのコードを調べたところ、実行時にsettings.DATABASESを拡張するとコード内でSomeModel.objects.using('some-new-database').all()を使用できるようになりました。テストしていないが、これはうまくいくはずです!

+0

ありがとうございました。私はあなたの提案を見て、それは正常に動作します。それはいくつかのスレッドローカルなものであり、必要に応じていくつかのミドルウェアを使ってデータベースを切り替えることができます。残念ながら、Django *は、PK-freeテーブルで明示的に作成されているため、EMBLデータセットを使用することはできません。そのようなハック... –

+0

"EMBLデータセット"とは何ですか? –

+0

欧州分子生物学ライブラリーによって提供される凍結ゲノムデータセット。詳細については、ensembl.orgを参照してください。私たちはこれらのデータセットを商用プロジェクトの補助として使用しようとしています。データベース、カスタマイズされたORM(非常に冗長で非常にペルニックPerlで書かれたもの)以上のものは何から始めるのでしょうか? –

関連する問題