Django 用に特別に使用しているデータベースが 1 つあります。私は簡単な問題に遭遇しました。ログイン時のユーザー認証には、別のデータベース (mysql) とテーブルのデータを使用する必要があります。両方のテーブルが同じサーバーにあります。どうやってやるの?ありがとう
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   に答える