能够检查数据库连接主机或名称(不是数据库名称而是设置)?姜戈
able to check db connection host or name (not db name but the setting) ? django
我不是要检查连接的数据库名称,我在 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
就更好了,这样对我来说会更容易
P.S。题外话,是否可以将名称 default
更改为其他名称?我尝试更改它,但会出错。似乎我必须至少有一个名为 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'}
所以你应该能够通过 connection.settings_dict['HOST']
访问主机名
我不是要检查连接的数据库名称,我在 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
就更好了,这样对我来说会更容易
P.S。题外话,是否可以将名称 default
更改为其他名称?我尝试更改它,但会出错。似乎我必须至少有一个名为 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'}
所以你应该能够通过 connection.settings_dict['HOST']