不能看到有多个数据库景观SQL查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不能看到有多个数据库景观SQL查询相关的知识,希望对你有一定的参考价值。

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)

此代码下降qazxsw POI,因为它不尊重qazxsw POI,有点检查默认数据库里面是空的(空default_db是相当好的在Django文档说)

2)当在运行时我打开一个壳监视查询:

ImproperlyConfigured

我刚看到这一点:

.using("db2")

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空。所以,你必须通过插入虚拟数据设置默认。

如果解决了第一个问题,但第二个问题仍然存在,请让我知道。

编辑:

如果默认数据库的概念并不在项目的上下文中有意义的,你必须要小心总是指定要使用的数据库。 Django的要求,默认的数据库条目进行定义,但参数字典可以留空,如果不会使用它。要做到这一点,你必须为所有的应用程序的模型,包括那些在你使用任何的contrib和第三方应用程序的database doc,所以没有查询被路由到默认的数据库。下面是一个例子settings.py片断限定两个非默认数据库,与有意留为空的默认项:

default。所以,你需要配置DATABASE_ROUTERS

以上是关于不能看到有多个数据库景观SQL查询的主要内容,如果未能解决你的问题,请参考以下文章

使用 with as 优化SQL

Microsoft SQL Server 代码片段收集

SQL多个主键的表,插入数据有重复时,查询数据的重复值?

求助sql语句,多个join嵌套

sql [SQL查询片段]用于在命令行或通过R和其他工具使用SQL的快速代码段#tags:sql,R,text processing,命令li

sql - 测试函数的多个值