別々の読み取りと書き込みを達成するために、Djangoのデータベース接続の複数の

別々の読み取りと書き込み

基本的な原理は、データベースからSELECTクエリを処理している間に、操作を、メインのトランザクションデータベース処理は、変更を加える加える操作、削除(INSERT、UPDATEを、DELETE)することで、データベースは物事が同期するために、他のデータベースから生じた操作を変更コピーするために使用されますSQLに、例えば、マスター・データベースは、データの読み取り、書き込みを担当し、データライブラリを読み込むための唯一の責任を読んで、ライブラリのすべての書き込み操作、同期更新ライブラリが読み込み、ライブラリーを書くために、読書ライブラリは、複数のログを使用して同期していることができますデータおよび複数のデータベースの同期のためのマスターデータベース

次のように具体的な構成があります

設定ファイルに割り当てスレーブデータベースを増やします

Djangoのsettings.py設定ファイルでは、データベースは、次のコードを追加します。

= {DATABASES 
    'デフォルト':{ 
        'ENGINE': 'django.db.backends.mysql'、
        'HOST': '127.0.0.1'、実行#マスターサーバーIP 
        'PORT':3306、マスターサーバーのポート番号を実行しています
        'ユーザー': 'ジャンゴ'、ユーザー名#プライマリサーバ
        'パスワード': 'ジャンゴ'、パスワード#マスターサーバー
        の'name': 'djangobase' #テーブル名
    }、
    'スレーブ':{ 
        'ENGINE': ' django.db.backends.mysql '   
        'HOST ':' 127.0.0.1'、
        'PORT ':8306、
        ' USER ':' django_slave'、
        'PASSWORD ':' django_slave'、
        ' NAME ':'djangobase_slave」 
    } 
}  

ルート分類データベース操作を作成します。

db_router.py utilsのプロジェクトファイル、および個別の読み取りに使用されるファイルデシベル、中クラスの定義を作成し、書き込み

MasterSlaveDBRouterクラス(オブジェクト):
    「」「読み書きするマスター・データベースとは別のルート」「」

    DEF db_for_read(セルフ、モデルは、**ヒント):
        「」「読むデータベース」「」
        復帰「奴隷」

    DEF db_for_write(セルフ、モデル、ヒント**):
        "" "データベース書き込み" "" 
        復帰"デフォルト" 

    :DEFのallow_relation(セルフ、OBJ1、OBJ2は、**)ヒント
        "" " "実行されている操作に関連付けられている"" 
        Trueを返し  

ルートを設定すると、読み取りと書き込みの分離します

設定ファイルの増加

#別の読み取りを設定し、書き込み
DATABASE_ROUTERSの= [「項目名.utils.db_router。「カスタムクラス名」 ']

  

 

おすすめ

転載: www.cnblogs.com/xinjie123/p/10931508.html