Database Django:检测数据库后端
我正在用Django进行一些“额外”查询,这些查询需要同时在sqlite和postgres上工作。这些查询的语法因后端而异,但我无法确定是将查询发送到postgres还是sqliteDatabase Django:检测数据库后端,database,django,backend,detect,Database,Django,Backend,Detect,我正在用Django进行一些“额外”查询,这些查询需要同时在sqlite和postgres上工作。这些查询的语法因后端而异,但我无法确定是将查询发送到postgres还是sqlite 有没有办法获取当前的数据库适配器,以便我可以分支代码并发送对活动数据库服务器的正确查询?好的,有两种方法,正如@Ricola3D所说的,可以选择检查设置。数据库['default']['ENGINE']: >>> from django.conf import settings >>&
有没有办法获取当前的数据库适配器,以便我可以分支代码并发送对活动数据库服务器的正确查询?好的,有两种方法,正如@Ricola3D所说的,可以选择检查
设置。数据库['default']['ENGINE']
:
>>> from django.conf import settings
>>> settings.DATABASES['default']['ENGINE']
'django.db.backends.sqlite3' or 'django.db.backends.postgresql_psycopg2'
但连接上还有一个(未记录的)供应商属性:
>>> from django.db import connection
>>> connection.vendor
'postgresql' or 'sqlite'
两种方法都有效。我个人更喜欢
connection.vendor
,因为它看起来更漂亮:)查询接受关键字“using”,您可以在其中选择执行查询的数据库。当前数据库在settings.py中始终为DATABASES['default'],否?数据库['default']['ENGINE']应该包含引擎类型。我考虑的是一个真正的API,而不是检查设置(如中建议的设置)。不过,检查设置工作正常,我想将其标记为答案,但我无法:)