1. 程式人生 > 資料庫 >Django實現MySQL讀寫分離

Django實現MySQL讀寫分離

1. 增加slave資料庫的配置

DATABASES = {
    'default': { # 寫(主機)
        'ENGINE': 'django.db.backends.mysql', # 資料庫引擎
        'HOST': '192.168.103.158', # 資料庫主機
        'PORT': 3306, # 資料庫埠
        'USER': 'itcast', # 資料庫使用者名稱
        'PASSWORD': '123456', # 資料庫使用者密碼
        'NAME': 'meiduo_mall' # 資料庫名字
    },
    'slave': { # 讀(從機)
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '192.168.103.158',
        'PORT': 8306,
        'USER': 'root',
        'PASSWORD': 'mysql',
        'NAME': 'meiduo_mall'
    }
}

2. 建立和配置資料庫讀寫路由

1.建立資料庫讀寫路由

  • meiduo_mall.utils.db_router.py中實現讀寫路由
class MasterSlaveDBRouter(object):
    """資料庫讀寫路由"""

    def db_for_read(self, model, **hints):
        """讀"""
        return "slave"

    def db_for_write(self, model, **hints):
        """寫"""
        return "default"

    def allow_relation(self, obj1, obj2, **hints):
        """是否執行關聯操作"""
        return True

2.配置資料庫讀寫路由

DATABASE_ROUTERS = ['meiduo_mall.utils.db_router.MasterSlaveDBRouter']