Подтвердить что ты не робот

Django: обнаружение бэкэнд базы данных

Я делаю "дополнительные" запросы в Django, которые должны работать как на sqlite, так и на postgres. Синтаксис этих запросов варьируется между бэкэнд, но я не могу понять, отправляю ли я свои запросы либо в postgres, либо в sqlite.

Есть ли способ получить текущий адаптер базы данных, чтобы я мог разветкить свой код и отправить правильный запрос для активного сервера базы данных?

4b9b3361

Ответ 1

ОК, так что есть два способа сделать это, так как @Ricola3D сказал, что есть возможность проверить settings.DATABASES['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, поскольку он выглядит красивее:)