在进行django项目开发的时候,遇到了需要连接两个MySQL数据库的问题。同时使用django自带的admin进行后台数据管理。把解决方案记录在这里~
首先我找到的解决方案是针对django项目中有多个app,app之间使用不同数据库的需求。具体配置如下:
将settings.py中的DATABASES配置成:
DATABASES = {
'default': {
},
'db_a': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname_a',
'USER': 'user_name',
'PASSWORD': 'password',
"HOST": "localhost",
"PORT": '3306',
},
'db_b': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname_b',
'USER': 'user_name',
'PASSWORD': 'password',
"HOST": "localhost",
"PORT": '3306',
},
}
其中default可以为空,但是不能删除,db_a, db_b是需要配置的数据库连接信息。
在settings.py中增加一段用于配置不同app对应各自数据库的代码:
DATABASE_ROUTERS = ['project_name.database_router.DatabaseAppsRouter']
DATABASE_APPS_MAPPING = {
'app1': 'db_a',
'app2': 'db_b',
}
这里的代码和下面的database_router.py 不添加也没有关系。依然可以通过.using()为要进行的操作指定数据库,之后会放例子~
在项目文件夹中新建database_router.py 文件,内容如下:
# -*- coding: utf-8 -*-
from django.conf