32

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

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

4

1 に答える 1

69

OK、@ Ricola3Dがチェックのオプションがあると言ったように、それを行うには2つの方法があります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 に答える