在Django中获取数据库类型

里科

我需要能够确定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)

现在,hstore如果不是PostgreSQL DB ,我不想在此类上执行特定的功能。这会清除更多吗?

编辑1:

谢谢KevinDTimm提供的链接。看起来Django模型._state.db在实例化时确实具有当然,我的实例有一个None类型。:(

>> print(instance._state.db)
None
里科

KevinDTimm将我引向该解决方案的第一步。谢谢!

https://stackoverflow.com/a/18343919/787716建议使用模型的._state.db参数来确定用于实例化的数据库。

但是,如果使用的数据库settings.DATABASES['default'],然后._state.dbNone

因此,我可以通过以下方法解决我的问题:

db_name = 'default'
if instance._state.db is not None:
    db_name = instance._state.db
db_backend = settings.DATABASES[db_name]['ENGINE'].split('.')[-1]
MYSQL = db_backend == 'mysql'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Django的数据库模型中获取字段类型字符串

来自分类Dev

如何在Laravel中获取数据库字段类型?

来自分类Dev

获取要存储在数据库中的文件类型

来自分类Dev

如何从django中的数据库获取最新数据

来自分类Dev

如何从数据库Django 3.0中获取图像

来自分类Dev

从Django中的数据库获取单个记录

来自分类Dev

如何从SQLite数据库的Select查询中以String数据类型获取数据?

来自分类Dev

Grails基于类型为另一域类型的字段从数据库中获取域对象

来自分类Dev

从数据库中的表获取数据

来自分类Dev

从UserSpice中的数据库获取数据

来自分类Dev

无法从数据库中获取数据

来自分类Dev

如何从数据库中获取数据?

来自分类Dev

从UserSpice中的数据库获取数据

来自分类Dev

PHP从数据库中获取数据

来自分类Dev

从FMDB数据库中获取数据

来自分类Dev

如何将表单模型中的数据获取到 Django 中的数据库中

来自分类Dev

从文件中找出数据库类型

来自分类Dev

c#linq在tph中获取数据库中项目的类型

来自分类Dev

如何从Django的jinj2模板中的数据库中获取随机1/2数据?

来自分类Dev

从数组中的数据库获取多行

来自分类Dev

情绪从数据库中获取价值

来自分类Dev

从数据库中获取变量的价值

来自分类Dev

在PHP中获取数据库结果

来自分类Dev

在mysql中获取Wikipedia数据库?

来自分类Dev

从数据库中获取Guid

来自分类Dev

情绪从数据库中获取价值

来自分类Dev

从数据库中获取价值

来自分类Dev

从数据库中获取价值

来自分类Dev

TCPDF 从数据库中获取值