【发布时间】:2019-02-12 06:18:36
【问题描述】:
Django 2.1.7,MySQL。 DATABASES 配置如下:
DATABASES = {
'default': {},
'auth_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'auth',
...
},
'db1': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db1',
...
},
'db2': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'd2',
...
}
}
我在查看原始 SQL 查询时遇到各种问题:
1) 无法打印特定查询集的查询:
qs = Model.objects.using("db2").filter(...)
print(qs.query)
此代码丢弃ImproperlyConfigured,因为它不尊重.using("db2"),并且不知何故检查默认数据库是空的(如django docs中所述,空的default_db很好)
2) 在运行时我打开一个 shell 来监控查询:
from django.db import connections
print(connections["db1"].queries)
我只看到这个:
[{'sql': 'None', 'time': '0.001'},
{'sql': 'None', 'time': '0.000'},
{'sql': 'None', 'time': '0.008'}]
debug=True 的设置如文档中所述。
有没有人遇到过这种多数据库问题的经验?
编辑: 如文档中所述,我的数据库路由器配置良好。在运行时一切都很好,但出于调试目的,我当然需要一个 shell 来手动测试不同数据库中的查询集。
【问题讨论】:
标签: django django-queryset multiple-databases