PageRenderTime 1156ms CodeModel.GetById 35ms RepoModel.GetById 7ms app.codeStats 0ms

/doc/tools.rst

http://github.com/mongodb/mongo-python-driver
ReStructuredText | 169 lines | 150 code | 19 blank | 0 comment | 0 complexity | b473f6dae9c321fdfd5a7009d63c7b01 MD5 | raw file
Possible License(s): Apache-2.0
  1. Tools
  2. =====
  3. Many tools have been written for working with **PyMongo**. If you know
  4. of or have created a tool for working with MongoDB from Python please
  5. list it here.
  6. .. note:: We try to keep this list current. As such, projects that
  7. have not been updated recently or appear to be unmaintained will
  8. occasionally be removed from the list or moved to the back (to keep
  9. the list from becoming too intimidating).
  10. If a project gets removed that is still being developed or is in active use
  11. please let us know or add it back.
  12. ORM-like Layers
  13. ---------------
  14. Some people have found that they prefer to work with a layer that
  15. has more features than PyMongo provides. Often, things like models and
  16. validation are desired. To that end, several different ORM-like layers
  17. have been written by various authors.
  18. It is our recommendation that new users begin by working directly with
  19. PyMongo, as described in the rest of this documentation. Many people
  20. have found that the features of PyMongo are enough for their
  21. needs. Even if you eventually come to the decision to use one of these
  22. layers, the time spent working directly with the driver will have
  23. increased your understanding of how MongoDB actually works.
  24. PyMODM
  25. `PyMODM <https://pypi.python.org/pypi/pymodm>`_ is an ORM-like framework on top
  26. of PyMongo. PyMODM is maintained by engineers at MongoDB, Inc. and is quick
  27. to adopt new MongoDB features. PyMODM is a "core" ODM, meaning that it
  28. provides simple, extensible functionality that can be leveraged by other
  29. libraries to target platforms like Django. At the same time, PyMODM is
  30. powerful enough to be used for developing applications on its own. Complete
  31. documentation is available on `readthedocs
  32. <https://pymodm.readthedocs.io/en/stable/>`_ in addition to a `Gitter channel
  33. <https://gitter.im/mongodb/pymodm>`_ for discussing the project.
  34. Humongolus
  35. `Humongolus <https://github.com/entone/Humongolus>`_ is a lightweight ORM
  36. framework for Python and MongoDB. The name comes from the combination of
  37. MongoDB and `Homunculus <http://en.wikipedia.org/wiki/Homunculus>`_ (the
  38. concept of a miniature though fully formed human body). Humongolus allows
  39. you to create models/schemas with robust validation. It attempts to be as
  40. pythonic as possible and exposes the pymongo cursor objects whenever
  41. possible. The code is available for download
  42. `at GitHub <https://github.com/entone/Humongolus>`_. Tutorials and usage
  43. examples are also available at GitHub.
  44. Ming
  45. `Ming <http://merciless.sourceforge.net/>`_ (the Merciless) is a
  46. library that allows you to enforce schemas on a MongoDB database in
  47. your Python application. It was developed by `SourceForge
  48. <http://sourceforge.net/>`_ in the course of their migration to
  49. MongoDB. See the `introductory blog post
  50. <http://blog.pythonisito.com/2009/12/ming-01-released-python-library-for.html>`_
  51. for more details.
  52. MongoEngine
  53. `MongoEngine <http://mongoengine.org/>`_ is another ORM-like
  54. layer on top of PyMongo. It allows you to define schemas for
  55. documents and query collections using syntax inspired by the Django
  56. ORM. The code is available on `GitHub
  57. <http://github.com/mongoengine/mongoengine>`_; for more information, see
  58. the `tutorial <http://docs.mongoengine.org/en/latest/tutorial.html>`_.
  59. MotorEngine
  60. `MotorEngine <https://motorengine.readthedocs.io/>`_ is a port of
  61. MongoEngine to Motor, for asynchronous access with Tornado.
  62. It implements the same modeling APIs to be data-portable, meaning that a
  63. model defined in MongoEngine can be read in MotorEngine. The source is
  64. `available on GitHub <http://github.com/heynemann/motorengine>`_.
  65. uMongo
  66. `uMongo <https://umongo.readthedocs.io/>`_ is a Python MongoDB ODM.
  67. Its inception comes from two needs: the lack of async ODM and the
  68. difficulty to do document (un)serialization with existing ODMs.
  69. Works with multiple drivers: PyMongo, TxMongo, motor_asyncio, and
  70. mongomock. The source `is available on GitHub
  71. <https://github.com/Scille/umongo>`_
  72. No longer maintained
  73. """"""""""""""""""""
  74. MongoKit
  75. The `MongoKit <http://github.com/namlook/mongokit>`_ framework
  76. is an ORM-like layer on top of PyMongo. There is also a MongoKit
  77. `google group <http://groups.google.com/group/mongokit>`_.
  78. MongoAlchemy
  79. `MongoAlchemy <http://mongoalchemy.org>`_ is another ORM-like layer on top of
  80. PyMongo. Its API is inspired by `SQLAlchemy <http://sqlalchemy.org>`_. The
  81. code is available `on GitHub <http://github.com/jeffjenkins/MongoAlchemy>`_;
  82. for more information, see `the tutorial <http://mongoalchemy.org/tutorial.html>`_.
  83. Minimongo
  84. `minimongo <http://pypi.python.org/pypi/minimongo>`_ is a lightweight,
  85. pythonic interface to MongoDB. It retains pymongo's query and update API,
  86. and provides a number of additional features, including a simple
  87. document-oriented interface, connection pooling, index management, and
  88. collection & database naming helpers. The `source is on GitHub
  89. <https://github.com/MiniMongo/minimongo>`_.
  90. Manga
  91. `Manga <http://pypi.python.org/pypi/manga>`_ aims to be a simpler ORM-like
  92. layer on top of PyMongo. The syntax for defining schema is inspired by the
  93. Django ORM, but Pymongo's query language is maintained. The source `is on
  94. GitHub <http://github.com/wladston/manga>`_.
  95. Framework Tools
  96. ---------------
  97. This section lists tools and adapters that have been designed to work with
  98. various Python frameworks and libraries.
  99. * `Djongo <https://nesdis.github.io/djongo/>`_ is a connector for using
  100. Django with MongoDB as the database backend. Use the Django Admin GUI to add and
  101. modify documents in MongoDB.
  102. The `Djongo Source Code <https://github.com/nesdis/djongo>`_ is hosted on GitHub
  103. and the `Djongo package <https://pypi.python.org/pypi/djongo>`_ is on pypi.
  104. * `Django MongoDB Engine
  105. <https://django-mongodb-engine.readthedocs.io/en/latest/>`_ is a MongoDB
  106. database backend for Django that completely integrates with its ORM.
  107. For more information `see the tutorial
  108. <https://django-mongodb-engine.readthedocs.io/en/latest/tutorial.html>`_.
  109. * `mango <http://github.com/vpulim/mango>`_ provides MongoDB backends for
  110. Django sessions and authentication (bypassing :mod:`django.db` entirely).
  111. * `Django MongoEngine
  112. <https://github.com/MongoEngine/django-mongoengine>`_ is a MongoDB backend for
  113. Django, an `example:
  114. <https://github.com/MongoEngine/django-mongoengine/tree/master/example/tumblelog>`_.
  115. For more information `<http://docs.mongoengine.org/en/latest/django.html>`_
  116. * `mongodb_beaker <http://pypi.python.org/pypi/mongodb_beaker>`_ is a
  117. project to enable using MongoDB as a backend for `beaker's
  118. <http://beaker.groovie.org/>`_ caching / session system.
  119. `The source is on GitHub <http://github.com/bwmcadams/mongodb_beaker>`_.
  120. * `Log4Mongo <https://github.com/log4mongo/log4mongo-python>`_ is a flexible
  121. Python logging handler that can store logs in MongoDB using normal and capped
  122. collections.
  123. * `MongoLog <http://github.com/puentesarrin/mongodb-log/>`_ is a Python logging
  124. handler that stores logs in MongoDB using a capped collection.
  125. * `c5t <http://bitbucket.org/percious/c5t/>`_ is a content-management system
  126. using TurboGears and MongoDB.
  127. * `rod.recipe.mongodb <http://pypi.python.org/pypi/rod.recipe.mongodb/>`_ is a
  128. ZC Buildout recipe for downloading and installing MongoDB.
  129. * `repoze-what-plugins-mongodb
  130. <http://code.google.com/p/repoze-what-plugins-mongodb/>`_ is a project
  131. working to support a plugin for using MongoDB as a backend for
  132. :mod:`repoze.what`.
  133. * `mongobox <http://github.com/theorm/mongobox>`_ is a tool to run a sandboxed
  134. MongoDB instance from within a python app.
  135. * `Flask-MongoAlchemy <http://github.com/cobrateam/flask-mongoalchemy/>`_ Add
  136. Flask support for MongoDB using MongoAlchemy.
  137. * `Flask-MongoKit <http://github.com/jarus/flask-mongokit/>`_ Flask extension
  138. to better integrate MongoKit into Flask.
  139. * `Flask-PyMongo <http://github.com/dcrosta/flask-pymongo/>`_ Flask-PyMongo
  140. bridges Flask and PyMongo.
  141. Alternative Drivers
  142. -------------------
  143. These are alternatives to PyMongo.
  144. * `Motor <https://github.com/mongodb/motor>`_ is a full-featured, non-blocking
  145. MongoDB driver for Python Tornado applications.
  146. * `TxMongo <https://github.com/twisted/txmongo>`_ is an asynchronous Twisted
  147. Python driver for MongoDB.
  148. * `MongoMock <https://github.com/mongomock/mongomock>`_ is a small
  149. library to help testing Python code that interacts with MongoDB via
  150. Pymongo.