1

実行時に 2 つの mysql サーバーを切り替えようとしています。常に両方の接続を維持する必要はありません。

これが私がしていることです

from django.conf import settings
from django.db import connection
from django.contrib.auth.models import User

connection.close()
setattr(settings, 'DATABASE_HOST', 'mysql1.com')
list1 = User.objects.all()

connection.close()
setattr(settings, 'DATABASE_HOST', 'mysql2.com')
list2 = User.objects.all()

私は次のsettings.pyを持っています:

DATABASE_HOST = '' # localhost
DATABASE_NAME = test
...

データベース名はすべてのサーバーで同じで、各テーブルの内容のみが異なります。

両方のサーバーでユーザーが異なるため、 list1 != list2 を取得する必要があります。

問題は、mysql 1 サーバーから、次に mysql 2 サーバーからではなく、settings.py (localhost で実行されている) で定義されたデフォルト データベースから常にユーザーのリストを取得することです。

私がここで間違っていることは何か分かりますか?

ローラン

4

2 に答える 2

1

参考までに、Djangoのドキュメントには、これを行うべきではないと明示的に記載されています-実行時に設定を変更します

一度に複数の接続/データベースをサポートするORMについて、Djangoコミュニティ内で多くの話があります。そこにはたくさんの良い参考情報があります。このブログ投稿をチェックしてください: Djangoの簡単なマルチデータベースサポートとこのDjangowikiページの複数データベースサポート

ブログ投稿では、EricFlorenzanoがsettings.pyファイルで次のようなことを行っています。

DATABASES = dict(
    primary = dict(
        DATABASE_NAME=DATABASE_NAME,
        # ...
    ),
    secondary = dict(
        DATABASE_NAME='secondary.db',
        # ...
    ),
)
于 2009-11-10T01:47:34.307 に答える