Django でデータベースの現在の名前を知るにはどうすればいいですか? 質問する

Django でデータベースの現在の名前を知るにはどうすればいいですか? 質問する

私は Django プロジェクトでテストを書いています。今のところ、2 つのデータベース接続があります。

(settings.py)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'db_name'
        ...
    },
}

MongoDBへのカスタム接続:

import sys
from pymongo import Connection
from pymongo.errors import ConnectionFailure
try:
    connection = Connection(host="localhost", port=27017)
    db = connection['db_name']
    print "Connected successfully(Mongo, db_name)"
except ConnectionFailure, e:
    sys.stderr.write("Could not connect to MongoDB: %s" % e)
    sys.exit(1)

そして、プロジェクトがいつ完了するかを知りたいのです

python manage.py test myapp

テストを実行すると、Djangoは自動的に別のDB(名前はテストデータベース名)、しかしこの場合Mongoはデータベース名。 私は試した:

import sys
from pymongo import Connection
from pymongo.errors import ConnectionFailure
from django.db import connections

try:
    connection = Connection(host="localhost", port=27017)
    db_name = connections['default'].settings_dict['NAME']
    db = connection[db_name]
    print "Connected successfully(Mongo, %s)" % (db_name,)
except ConnectionFailure, e:
    sys.stderr.write("Could not connect to MongoDB: %s" % e)
    sys.exit(1)

しかし、それは機能しない

ベストアンサー1

最近の Django バージョン (1.8 以降) で db 名を取得するには:

from django.db import connection
db_name = connection.settings_dict['NAME']
# Or alternatively
# db_name = connection.get_connection_params()['db']

ユニット テストを実行するときに正しい値になるように、初期化後にこの値を読み取ることに注意してください。

おすすめ記事