配置多個數據庫
1.修改django的settings配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'db2': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db2.sqlite3'),
}
}
2.執行數據庫同步指令,將表結構生成到db2數據庫中
python migrate --database db2
讀寫分離
手動操作
使用using指定使用哪個數據庫
from app1 import models
def index(request):
obj = models.Id.objects.using("db2").all()
return render(request,"index.html",{"obj":obj})
配置操作
在應用下創建py文件,名字隨意
# app1/router
import random
class Router:
# 指定讀所使用的庫
def db_for_read(self,model,**kwargs):
#獲取當前model對象所在的應用名稱
app_name = model._meta.app_label
#獲取當前操作的model對象的表名
model_name= model._meta.model_name
# 返回哪個庫名就使用哪個庫
return 'default'
# 隨機使用一個數據庫
return random.choice(['db1','default'])
# 制定寫所使用的庫
def db_for_write(self,model,**kwargs):
return 'db2'
在settings中添加配置
DATABASE_ROUTERS = ['app1.router.Router',]