Mongoengine: ConnectionError: You have not defined a default connection

django, mongodb, mongoengine, python

Solution

To use django with MongoDB do not use the django package available on https://www.djangoproject.com and install other packages like mongoengine, if follow this process you will find lot of difficulties.

Rather you need to use the no@rel version of django that has been forked from djangoproject and added MongoDB support and I am sure it will make setup process and development process lot easier.

Follow this link to install and set up the django with MongoDB. http://django-mongodb-engine.readthedocs.org/en/latest/topics/setup.html

One more thing you may find the error below, while setting up django.

"*Error on Django-nonrel and MongoDB: AutoField (default primary key) values must be strings representing an ObjectId on MongoDB (got u'1' instead). Please make sure your SITE_ID contains a valid ObjectId string.*"

Follow this link to fix.

https://gist.github.com/ielshareef/2986459

Please let me know if you need any more help on this.

Problem

In my new Django project I set up a MongoDB database and use mongoengine module but I can't properly access the dabase neither in shell nor in views. ``` "ConnectionError: You have not defined a default connection" ``` My `settings.py` includes the following: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DaTaBaSe', 'USER': 'root', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '3306', }, 'tracking': { 'ENGINE': 'django.db.backends.dummy', 'NAME': 'analytics', } } import mongoengine SESSION_ENGINE = 'mongoengine.django.sessions' mongoengine.connect(_MONGODB_NAME, 'localhost:27017') AUTHENTICATION_BACKENDS = ( 'mongoengine.django.auth.MongoEngineBackend', ) ``` In models.py: ``` import mongoengine from mongoengine import * from myproject.settings import _MONGODB_NAME mongoengine.connect(_MONGODB_NAME, 'localhost:27017') ```

Original source