Estoy escribiendo pruebas en mi proyecto django. Por ahora, tengo dos conexiones de bases de datos:¿Cómo saber el nombre actual de la base de datos en Django?
(settings.py)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db_name'
...
},
}
y la costumbre de conexión a 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)
y quiero saber cuando mi proyecto se está ejecutando a través
python manage.py test myapp
Porque cuando ejecutar pruebas, django crea automáticamente una base de datos separada (con nombre como test_db_name), pero en este caso Mongo seguirá ejecutándose con db_name. Probé:
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)
pero no funciona
¿Has probado esto (https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEST_NAME) en la configuración mongodb en Django? Nunca usé mongodb con django, así que no estoy seguro si lo configuras de esa manera. – Fred
Sí, pero la pregunta es: ¿cómo puedo identificar qué configuración debo usar? connections ['default']. settings_dict es solo _dict_ –
Ninguno de los elementos de formato parece funcionar. Lo siento, esto es feo. Subir al nivel superior y explorar "./manage.py shell" >>> desde conexiones de importación django.db >>> connections.databases ['default'] {'ENGINE': 'django.db. backends.mysql ',' TEST_MIRROR ': Ninguno,' NAME ':' xxxx ',' TEST_CHARSET ': Ninguno,' TIME_ZONE ':' America/Chicago ',' TEST_COLLATION ': Ninguno,' OPTIONS ': {},' HOST ':' localhost ',' USER ':' xxxx ',' TEST_NAME ': None,' PASSWORD ':' xxxx ',' PORT ':' '} ¿Alguna de estas entradas de TEST_FOO puede aparecer cuando se prueban? –