<分区>
我需要能够确定 Django 运行时使用的数据库类型。
MYSQL = False
if <something goes here>:
MYSQL = True
我看到了相关的 Django 票证,但并没有完全找到我的解决方案。 ( https://code.djangoproject.com/ticket/18332 )
最好有一个解决方案,我可以确定它是 MySQL、PostgreSQL、SQLite、Oracle...等等。
我已经尝试挖掘 django.db
但看不到任何有用的东西。
我将详细说明我正在尝试做的事情,因为它似乎被误解了。这是一个独立于任何 Django 项目的测试实用程序项目。我的实用程序需要了解正在使用哪个数据库来防止非法事件。
例如,我的包支持 PostgreSQL hstore 字段,但在 SQLite 中不存在这样的字段。因此,如果他们使用 SQLite,我不想允许特定功能。
我可以访问他们与该实用程序一起使用的 Django 模型。
from my_app.models import Foo
testing_utility(Foo, **kwargs)
我的testing_utility
签名是:
def testing_utility(klass, **kwargs):
instance = klass(**kwargs)
现在,如果不是 PostgreSQL 数据库,我不想在此类上预先形成 hstore
特定功能。这是否会更清楚一些?
编辑 1:
感谢 KevinDTimm 提供的链接。看起来 Django 模型在实例化时确实有 ._state.db
。当然,我的实例有一个 None
类型。 :(
>> print(instance._state.db)
None