Tôi đang viết bài kiểm tra trong dự án django của mình. Còn bây giờ, tôi có hai kết nối cơ sở dữ liệu:Làm thế nào để biết tên hiện tại của cơ sở dữ liệu ở Django?
(settings.py)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db_name'
...
},
}
và tùy chỉnh kết nối đến 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)
và tôi muốn biết khi nào dự án của tôi đang chạy qua
python manage.py test myapp
Bởi vì khi bạn chạy thử nghiệm, django tự động tạo DB riêng (với tên như test_db_name), nhưng trong trường hợp này Mongo sẽ vẫn chạy với db_name. Tôi cố gắng:
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)
nhưng nó không hoạt động
Bạn đã thử điều này chưa (https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEST_NAME) trong cài đặt mongodb trong django? Tôi không bao giờ sử dụng mongodb với django vì vậy tôi không chắc chắn nếu bạn cấu hình nó theo cách như vậy. – Fred
Có, nhưng câu hỏi đặt ra là: làm thế nào tôi có thể xác định tôi nên sử dụng cài đặt nào? các kết nối ['mặc định']. settings_dict chỉ là _dict_ –
Không có định dạng nào có vẻ hoạt động. Xin lỗi điều này là xấu xí. Nhận ở cấp cao nhất và poke xung quanh "./manage.py shell" >>> từ kết nối nhập django.db >>> connections.databases ['default'] {'ENGINE': 'django.db. "." ':' localhost ',' USER ':' xxxx ',' TEST_NAME ': Không,' PASSWORD ':' xxxx ',' PORT ':' '} Có thể một số mục TEST_FOO được điền khi thử nghiệm? –