【发布时间】:2018-06-15 19:33:48
【问题描述】:
我没有尝试检查连接的数据库名称,我在 django 中设置了多个数据库,还使用database route 创建了一个failover,但我想知道是否可以获得连接主机的名称或设置的名称...
例如
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,
},
}
是否有可能得到我上面注释掉的那些名字?
对于我的故障转移,如果正在使用另一个数据库,我会尝试发送电子邮件,但如果我能特别获得host 那就太好了,这样对我来说会更容易
附:题外话,是否可以将名称 default 更改为其他名称?我试着改变它,我会得到错误。似乎我必须至少有一个名为default的数据库设置名称@
提前感谢您的帮助。
【问题讨论】:
-
我不太了解故障转移或有多个
DATABASES,但查看this other answer 看起来应该可以获得连接的数据库名称? -
DATABASES是否设置在某个配置文件中? -
@BorrajaX 那是我已经读过的,但它只给出了数据库名称,因为提到的数据库名称不是我想要的。我想获取
default设置的名称或host -
@JacobIRR 在不同的文件中,可用于不同的开发和生产设置
-
如果您可以获得连接名称,不应该这样做:
from django.conf import settings; settings.DATABASES[connection.settings_dict['NAME']]['HOST']吗? (或者如果connection.settings_dict恰好是您在 Django 设置中的同一个字典,那么看起来更简单)只是connection.settings_dict['HOST']?
标签: python mysql django database settings