4

Cette question est déjà posée sur StackOverflow,Django 1.8 et MongoDB?

Les questions posées remontent à 2013, son 2015 maintenant et Django a grandi rapidement.

Quelle est la situation de l'utilisation de mongodb avec Django 1.8 à partir de 2015?

Est-ce que Django prend en charge Monogodb dès sa sortie de l'emballage (avec des adaptateurs db)? ou une autre distribution comme django-nonrel devrait être utilisée?

Répondre

3

juste mes pensées et un peu subjectif et opiniâtre mais je dirais que cela ne fonctionne pas très bien. J'ai rapidement dissous l'idée d'essayer d'exécuter Django avec MongoDB, puisque son système d'authentification dépend fortement d'une base de données relationnelle pour fonctionner.

Il y a apparemment des façons de contourner cela, mais finalement j'ai décidé pour mon projet que ça ne valait pas la peine d'utiliser MongoDB.

3

Je ne pense pas que Django offre un support de MongoDB prêt à l'emploi. Il est plus adapté aux bases de données relationnelles.

Une solution pourrait utiliser MongoEngine.

MongoEngine est un objet-document Mapper, écrit en Python pour travailler avec MongoDB.

Vous devez simplement configurer MongoEngine avec Django et cela devrait fonctionner confortablement.

+0

'MongoEngine' semble nécessiter Django 1.6-nonrel, qui est une rétrogradation et manque de support officiel –

+0

Non, Mongoengine ne nécessite pas Django-nonrel pour fonctionner avec lui. Vous pouvez installer Django, Mongoengine et pymongo et cela devrait marcher pour vous. J'utilise actuellement Django (1.8.2), mongoengine (0.10.0) avec pymongo (3.0.3) dans un projet et son fonctionnement est parfait. –

+0

@PeterGerhat semble avoir fait référence à django-mongodb-engine qui nécessite non req req. une version plus ancienne de [django] (https://django-mongodb-engine.readthedocs.org/en/latest/topics/setup.html#django-nonrel) .. En regardant les deux sur github, MongoEngine semble être le chemin à parcourir .. – codervince

2

Est-ce que Django prend en charge Monogodb dès sa sortie de l'emballage (avec les adaptateurs db)?

Non, il ne fonctionne pas. Si vous pouvez trouver un moteur compatible django pour mongodb, alors cela fonctionnera parfaitement.

La bonne nouvelle est qu'il existe un tel moteur, appelé django-mongodb-engine; la mauvaise nouvelle est qu'elle repose sur django-nonrel qui n'est pas mis à jour par rapport à la dernière version stable de django. Donc, si vous devez - vous pouvez utiliser MongoDB au détriment de ne pas avoir à votre disposition des fonctionnalités django mises à jour (et plus important encore, des correctifs de sécurité).

Si vous voulez compléter votre base de données principale avec mongodb - c'est, mongodb ne sera pas votre base de données primaire, alors le processus est beaucoup plus facile.

Donc, en résumé:

  • django 1.8 fournit pas hors-the-box pour MongoDB (ou d'autres bases de données non relationnelles) en tant que magasin de données primaires.

  • La prise en charge est disponible à l'aide du package tiers django-nonrel, qui se trouve derrière la version de production de django actuelle.

1

je suis tombé sur un nouveau paquet qui prend en charge la dernière django sur MongoDB: djongo

Comme indiqué ci-dessus, mongoengine ne prend pas en charge toutes les applications contrib de django. Djongo prétend compiler des requêtes SQL dans des requêtes mongodb. Donc c'est essentiellement agnostique et fonctionne pour toutes les versions de Django.

Divulgation: J'ai contribué à ce paquet en faisant des corrections de bugs mineurs.