Django實現MySQL讀寫分離
阿新 • • 發佈:2020-12-30
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']