每个app使用不同的数据库
- 配置数据库连接
就是在settings.py 的DATABASES中配置数据库
配置数据库时必须要有default字段
例如:
- 配置数据库路由
在settings.py 添加DATABASES_APPS_MAPPING 和DATABASE_ROUTERS
例子:
# 多数据源配置
DATABASES_APPS_MAPPING = {
'demoapp': 'shujuku1',
'myapp': 'default',
}
DATABASE_ROUTERS = ['application.db_router.DatabaseRouter'] # (引号很重要)
具体详解:
DATABASES_APPS_MAPPING中的内容是把app和数据库连接对应起来
DATABASE_ROUTERS是指向数据库路由文件的具体地址
Application 包名
db_router 文件名
DatabaseRouter 方法名
- 数据库路由文件
上边的文件代码
# -*- coding: utf-8 -*-
from application import settings
class DatabaseRouter(object):
def db_for_read(self, model, **hints):
app_label = model._meta.app_label
if app_label in settings.DATABASES_APPS_MAPPING:
return settings.DATABASES_APPS_MAPPING[app_label]
return None
def db_for_write(self, model, **hints):
app_label = model._meta.app_label
if app_label in settings.DATABASES_APPS_MAPPING:
return settings.DATABASES_APPS_MAPPING[app_label]
return None
至此,使用myapp的model会访问default数据库,使用demoapp的model会访问shujuku1数据库