私は 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']
ユニット テストを実行するときに正しい値になるように、初期化後にこの値を読み取ることに注意してください。