Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Django:检测数据库后端_Database_Django_Backend_Detect - Fatal编程技术网

Database Django:检测数据库后端

Database Django:检测数据库后端,database,django,backend,detect,Database,Django,Backend,Detect,我正在用Django进行一些“额外”查询,这些查询需要同时在sqlite和postgres上工作。这些查询的语法因后端而异,但我无法确定是将查询发送到postgres还是sqlite 有没有办法获取当前的数据库适配器,以便我可以分支代码并发送对活动数据库服务器的正确查询?好的,有两种方法,正如@Ricola3D所说的,可以选择检查设置。数据库['default']['ENGINE']: >>> from django.conf import settings >>&

我正在用Django进行一些“额外”查询,这些查询需要同时在sqlite和postgres上工作。这些查询的语法因后端而异,但我无法确定是将查询发送到postgres还是sqlite


有没有办法获取当前的数据库适配器,以便我可以分支代码并发送对活动数据库服务器的正确查询?

好的,有两种方法,正如@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,而不是检查设置(如中建议的设置)。不过,检查设置工作正常,我想将其标记为答案,但我无法:)