配置多个数据库
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',]