0

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

4

1 に答える 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 に答える