Django:检测数据库后端

jaa*_*ap3 27 database django backend detect

我在Django中做了一些需要同时处理sqlite和postgres的"额外"查询.这些查询的语法在后端之间有所不同,但我无法弄清楚我是否将查询发送到postgres或sqlite.

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

jaa*_*ap3 59

好的,所以有两种方法可以做到,因为@ Ricola3D说可以选择检查settings.DATABASES['default']['ENGINE']:

>>> from django.conf import settings
>>> settings.DATABASES['default']['ENGINE']
'django.db.backends.sqlite3' or 'django.db.backends.postgresql_psycopg2'
Run Code Online (Sandbox Code Playgroud)

但是连接上还有一个(未记录的)供应商属性:

>>> from django.db import connection
>>> connection.vendor
'postgresql' or 'sqlite'
Run Code Online (Sandbox Code Playgroud)

无论哪种方式都有效.我个人更喜欢,connection.vendor因为它看起来更漂亮:)