47 votes

Quelle API Python doit être utilisée avec Mongo DB et Django

J'ai été un va-et-vient au-dessus de laquelle l'API Python à utiliser lors de l'interaction avec Mongo. J'ai fait une rapide étude du paysage et a identifié trois principaux candidats.

Si vous avez été la conception d'un nouveau contenu-lourds site web à l'aide de l' django cadre, ce que l'API choisiriez-vous et pourquoi?

MongoEngine dirait qu'il a été construit spécifiquement avec Django à l'esprit. PyMongo semble être une mince wrapper autour de Mongo. Il a beaucoup de pouvoir, mais perd beaucoup de la abstractions acquise grâce à l'aide de django comme un cadre. Ming représente un compromis intéressant entre la PyMongo et MongoEngine, bien que je n'ai pas eu l'occasion de le prendre pour un essai routier.

57voto

drg Points 971

Mike dit, vous ne pouvez pas éviter PyMongo - toutes les autres interfaces de construire au-dessus d'elle. Ces autres interfaces sont sans doute inutiles. Orm comme dans Django sont utiles lorsque vous traitez avec SQL, car ils atténuent la complexité de la création de requêtes SQL et de schémas, et le résultat de l'analyse des ensembles d'objets.

PyMongo cependant le possède déjà couverts - les requêtes passent par un moyen pratique et simple de l'API et les résultats à venir de MongoDB sont déjà des objets (bien, dicts en Python - même la différence) par définition. Si vous sentez que vous avez vraiment besoin pour décorer votre Mongo documents avec des objets Python, il est facile d'ajouter un FILS manipulateur PyMongo. La bonne chose à propos de cette approche est que vous pouvez écrire du code directement sur PyMongo, et glissez-le à des fonctionnalités supplémentaires plus tard sans avoir à insérer une nouvelle API entre votre code et PyMongo.

Ce qui est à gauche? Création du schéma de la migration sont un peu utile, mais sont presque aussi simplement fait ad-hoc - les chances sont que si vous envisagez de l'utiliser MongoDB vous voulez sortir de la traditionnelle SQL-modèle de style de toute façon. Aussi, si il y avait entièrement Django-compatible MongoDB ORM vous pourriez obtenir quelques kilométrage hors de lui. Rien de moins que cela, et vous sera probablement le travail de création pour vous-même.

Vous ne regretterez pas l'aide de PyMongo directement.

Une dernière option vaut la peine de regarder si vous êtes intéressé à en haut de l'efficacité est la version asynchrone de PyMongo, ici: http://github.com/fiorix/mongo-async-python-driver

11voto

Harold Points 2561

Je travaille avec Mongokit . Je l'aime jusqu'à présent.

Voici un article de blog auquel j'ai fait référence lors de l'intégration à Django

6voto

mdirolf Points 3804

MongoEngine et Ming dépendent tous deux de PyMongo - ils viennent d’ajouter quelques fonctionnalités intéressantes. Je recommanderais au moins de démarrer directement avec PyMongo - de cette façon, si vous décidez d'utiliser l'un des autres outils et que vous rencontrez des problèmes, il sera facile de comprendre ce qui se passe "sous le capot". Cela dit, je suis très partial;).

5voto

Vous pouvez essayer django-mongodb-engine. C'est un backend pour Django-nonrel, vous pouvez donc continuer à utiliser les modèles et ORM de Django. Ce n'est pas encore aussi complet que les autres API, cependant: http://www.allbuttonspressed.com/blog/django/2010/05/MongoDB-backend-for-Django-nonrel-released

2voto

knitatoms Points 876

Je viens de trouver 'micromongo':

http://packages.python.org/micromongo/

On dirait que cela ajoute juste assez de choses utiles sur le pymongo sans gêner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X