32

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

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

4

1 回答 1

69

好的,所以有两种方法可以做到这一点,正如@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它看起来更漂亮:)

于 2013-09-17T11:57:42.597 回答