我需要为我的 django 项目使用多个数据库。当只有一个数据库时,应用程序可以正常工作:
在设置.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
},
但是,如果我从同一个引擎添加更多数据库:
DATABASES = {
'default':{},
'mydb1': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb1',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
},
'mydb2': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb2',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
}
}
它给了我以下错误:
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
另外,我试过:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb1',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
},
'mydb2': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb2',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
}
}
它只看到 mydb1,而不是 mydb2,当我尝试查询 mydb2 时,它给了我:
DoesNotExist: Site matching query does not exist.
我需要定义数据库路由吗?看来我只需要为自定义读/写这样做。
谢谢
更新:
在 django 文档中,它说“默认路由方案确保如果未指定数据库,所有查询都回退到默认数据库”。
所以我想我的实际问题是 如何指定用于查询的数据库?