Python 是否能够检查数据库连接主机或名称(不是数据库名称,而是设置)?德扬戈

Python 是否能够检查数据库连接主机或名称(不是数据库名称,而是设置)?德扬戈,python,mysql,django,database,settings,Python,Mysql,Django,Database,Settings,我没有尝试检查连接的db名称,我在django中有多个数据库设置,并且还使用数据库路由创建了故障转移,但我想知道是否可以获得连接主机的名称或设置的名称 比如说 DATABASES = { 'default': { # trying to get this name 'default' 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db_name', 'USER': 'euser',

我没有尝试检查连接的db名称,我在django中有多个数据库设置,并且还使用
数据库路由
创建了
故障转移
,但我想知道是否可以获得连接主机的名称或设置的名称

比如说

DATABASES = {
    'default': {  # trying to get this name 'default'
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db_name',
        'USER': 'euser',
        'PASSWORD': 'password',
        'HOST': 'host', # trying to get this host name 'host'
        'PORT': 3306,
    },
    'node2': {  # trying to get this name 'node2'
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db_name',
        'USER': 'euser',
        'PASSWORD': 'password',
        'HOST': 'host2',  # trying to get this host name 'host2'
        'PORT': 3306,
    },
}
有没有可能得到那些我在上面注释掉的名字? 对于我的故障切换,如果正在使用另一个db,我会尝试发送一封电子邮件,但如果我能获得主机,尤其是
主机,那就太好了,这样对我来说会更容易

请注意,主题外,是否可以将名称
默认值
更改为其他名称?我试图改变它,我会得到错误。似乎我必须至少有一个名为
default

提前感谢您的帮助。

因此,请执行以下操作:

import pprint  # Makes it sooo pretty :)
from django.db import connection
print(pprint.pformat(connection.settings_dict))
将为您提供当前的连接设置。例如,上面的代码应该打印如下内容:

{'ATOMIC_REQUESTS': False,
 'AUTOCOMMIT': True,
 'CONN_MAX_AGE': 600,
 'ENGINE': 'django.db.backends.postgresql',
 'HOST': 'localhost',
 'NAME': 'stack_overflow',
 'OPTIONS': {},
 'PASSWORD': '***',
 'PORT': '5432',
 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None},
 'TEST_NAME': 'stack_overflow_test',
 'TIME_ZONE': None,
 'USER': 'postgres'}

因此,您只需执行
连接即可访问主机名。设置dict['HOST']

我对故障切换或拥有多个
数据库不太了解,但是看一下,似乎可以得到连接的数据库名?数据库是否设置在某个配置文件中?@BorrajaX这是我已经读过的,但它只给出了数据库名,正如我所说的,数据库名不是我想要的。我想在不同的文件中获取
默认设置的名称或
主机
@JacobIRR,该文件可用于不同的开发和生产设置如果您可以获取连接名,是否应该这样做:
来自django.conf导入设置;设置.数据库[连接.设置\u dict['NAME']['HOST']
?(或者,如果
connection.settings\u dict
恰好与Django设置中的dict相同,那么什么看起来更简单呢)只是
connection.settings\u dict['HOST']