【问题标题】:Django 2.2 - Testing which DB my application is connected to [duplicate]Django 2.2 - 测试我的应用程序连接到哪个数据库 [重复]
【发布时间】:2020-05-10 15:59:54
【问题描述】:

我希望这与之前已回答的几个问题相似。

我想知道在 Django 中测试当前连接的数据库的数据库连接字符串(不是数据库名称)的完整过程是什么?我看到了一些打印名称的方法,但是在本地开发和分期中,这些名称将是相同的。我需要了解更多,例如 db 引擎(例如,是 PostgreSQL,还是 db.sqlite3. 等等),以及其他各种 DB 参数。

我目前正在尝试调试为什么 Celery beat 任务无法为我连接到的应用程序数据库创建数据库条目我认为。

我正在执行一个简单的obj, created = Object.objects.get_or_create() DB 方法,在记录created 时,有些是True,有些是False。到目前为止一切顺利。

但是,Django CMS 的管理部分不再向数据库显示任何条目。

我相信测试 Django 应用程序正在使用的数据库的位置和连接字符串可能有助于调试这个幽灵对象的创建......除非有人可以就他们在 Celery 守护进程中遇到的类似问题提出建议,但实际上并未持久化数据库创建/更新等...

也许是这样的:

from django.db import connection
print(connection.settings_dict)

够了吗?

【问题讨论】:

  • 我想这是更好的方法,但我没有用 django 2.2 stackoverflow.com/a/18849255/3778674 测试它
  • @UtkuCansever 太棒了,是的。我对此问题和答案投了赞成票。

标签: django database docker celery


【解决方案1】:

因此,以下对于确定数据库引擎很有用:

from django.db import connection
print(connection.settings_dict)

对于有用的指导,connection.settings_dict 包含以下结构:

{
    'ENGINE': 'django.db.backends.sqlite3', 
    'NAME': '/usr/src/app/db.sqlite3', 
    'ATOMIC_REQUESTS': False, 
    'AUTOCOMMIT': True, 
    'CONN_MAX_AGE': 0, 
    'OPTIONS': {}, 
    'TIME_ZONE': None, 
    'USER': '', 
    'PASSWORD': '', 
    'HOST': '', 
    'PORT': '', 
    'TEST': {
        'CHARSET': None, 
        'COLLATION': None, 
        'NAME': None, 
        'MIRROR': None
    }
}

所以,我们可以在管理命令中使用这样的东西:

from django.db import connection
from django.core.management.base import BaseCommand

class Command(BaseCommand):
    help = 'Displays The Currently Connected DB Settings'

    def handle(self, *args, **kwargs):
        print(
            "The current database engine is {ENGINE}".format(**connection.settings_dict)
        )

        print(
            "Currently connected to host {HOST} on port {PORT} ".format(**connection.settings_dict)
        )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多