web-dev-qa-db-ja.com

Django:データベースバックエンドを検出する

Djangoで、sqliteとpostgresの両方で機能する必要がある「追加の」クエリを実行しています。これらのクエリの構文はバックエンドによって異なりますが、自分がそうであるかどうかを判断する方法がありません。クエリをpostgresまたはsqliteに送信します。

コードを分岐してアクティブなデータベースサーバーに適切なクエリを送信できるように、現在のデータベースアダプターを取得する方法はありますか?

28
jaap3

わかりました。@ Ricola3Dがsettings.DATABASES['default']['ENGINE']をチェックするオプションがあると言ったように、それを行うには2つの方法があります。

>>> 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の方がきれいに見えるので好きです:)

57
jaap3