【问题标题】:able to check db connection host or name (not db name but the setting) ? django能够检查数据库连接主机或名称(不是数据库名称而是设置)? django
【发布时间】: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


【解决方案1】:

所以,做:

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'] 访问主机名

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多