Django 用に特別に使用しているデータベースが 1 つあります。私は簡単な問題に遭遇しました。ログイン時のユーザー認証には、別のデータベース (mysql) とテーブルのデータを使用する必要があります。両方のテーブルが同じサーバーにあります。どうやってやるの?ありがとう
質問する
254 次
1 に答える
0
で両方のデータベースを定義する必要がありますsettings.py
。複数データベースのセットアップに関するドキュメントをよく読んでください。それはかなり簡単です。データベースを構成して同期したら、QuerySet
次のようにデータベースを手動で選択できます。
Model.objects.using('database').all()
アップデート:
モデルの接続を指定するには、次のように定義できますRouter
。
from django.db import connections
class MyRouter(object):
"""
This router object will take care of the database
operations for models.
"""
def db_for_read(self, model, **hints):
if hasattr(model,'connection_name'):
return model.connection_name
return None
def db_for_write(self, model, **hints):
if hasattr(model,'connection_name'):
return model.connection_name
return None
def allow_syncdb(self, db, model):
if hasattr(model,'connection_name'):
return model.connection_name == db
return db == default
そして、models.py のモデルに対して、次のようなことができます:
class MyModel(models.Model):
connection_name="filename"
アップデート#2
ルーターは好きな場所に設置できます。必要な作業は、ルーターのパスをファイル内のDATABASE_ROUTERS
変数に渡すことだけです。settings.py
コードをきれいにして整理するために、通常、これをrouters.py
アプリケーションフォルダーの下の別のファイルで行い、DATABASE_ROUTERS
例:
DATABASE_ROUTERS = ['myapp.routers.MyRouter',]
于 2012-12-28T08:46:41.513 に答える