5

Django プロジェクトで特定のアプリ用に別の SQLite データベースを作成することを検討していました。
ただし、可能であれば直接 SQLite アクセスを使用したくありませんでした。これらのデータベースへの Django スタイルの ORM アクセスが理想的です。
これは可能ですか?

ありがとうございました。

4

4 に答える 4

5

はい - このための低レベル API が用意されています。現時点では、便利な高レベル API が不足しています。これらの引用は、reddit のプログラミングに関する James Bennett (Django のリリース マネージャー) からのものです。

これは、コードベースを見る人向けの非常に低レベルの API で、数か月前から存在しています (すべてQuerySetが によってサポートされておりQuery、DB 接続を引数として受け入れます)。高レベルの文書化された API はありませんが、複数の DB/シャーディング シナリオのようなことを既に行っている人や、行っている人を知っています。

...それは必ずしも大きな記事を書く必要があるものではありません。の__init__()メソッドは、 のインスタンスであるQuerySetキーワード引数 を受け入れます。のメソッドは、キーワード引数 を受け入れます。これは、 (DB のバックエンド固有のサブクラス) のインスタンスである必要があります。querydjango.db.models.sql.Query__init__()Queryconnectiondjango.db.backends.BaseDatabaseWrapper

そこからはとても簡単です。たとえば、get_query_set()マネージャをオーバーライドして、必要な接続を使用して常に を返すQuerySetようにしたり、シャーディング ロジックなどを設定して、受信したクエリ パラメータに基づいてどの DB を使用するかを決定したりできます。

于 2008-10-04T12:19:48.333 に答える
4

すでにサポートされています http://docs.djangoproject.com/en/dev/topics/db/multi-db/

于 2010-07-21T15:25:03.353 に答える
2

現在はありません。各プロジェクトは 1 つのデータベースを使用し、すべてのアプリがその中に存在する必要があります。アプリ固有のデータベースが必要な場合、Django ORM を介して行うことはできません。Multiple Database Supportの Django wiki ページを参照してください。

于 2008-10-03T18:35:56.330 に答える
0

これはまだ可能ではありませんが、ウィキのDjangoのMultipleDatabaseSupportでいくつかの話があります。また、DjangoCon 2008でのDjangoの将来に関する基調講演でも取り上げられ、優先度の高い問題の1つになりました。

于 2008-10-03T18:46:05.357 に答える