我需要能夠確定在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數據庫。這是否清除了一些?
編輯1:
謝謝,KevinDTimm的鏈接。看起來Django模型在實例化時確實有._state.db
。當然,我的實例有一個None
類型。 :(
>> print(instance._state.db)
None
導入設置...... – KevinDTimm
然後呢?什麼設置將明確給我的數據庫連接?一般來說,我不知道有什麼數據庫被命名。對於任何不知道的人來說,它都是來自「django.conf導入設置」。 – Rico
http://stackoverflow.com/questions/10101602/how-to-know-current-name-of-the-database-in-django – KevinDTimm