Navigation

Many tools have been written for working with PyMongo. If you know
of or have created a tool for working with MongoDB from Python please
list it here.

Note

We try to keep this list current. As such, projects that
have not been updated recently or appear to be unmaintained will
occasionally be removed from the list or moved to the back (to keep
the list from becoming too intimidating).

If a project gets removed that is still being developed or is in active use
please let us know or add it back.

Some people have found that they prefer to work with a layer that
has more features than PyMongo provides. Often, things like models and
validation are desired. To that end, several different ORM-like layers
have been written by various authors.

It is our recommendation that new users begin by working directly with
PyMongo, as described in the rest of this documentation. Many people
have found that the features of PyMongo are enough for their
needs. Even if you eventually come to the decision to use one of these
layers, the time spent working directly with the driver will have
increased your understanding of how MongoDB actually works.

PyMODM

PyMODM is an ORM-like framework on top
of PyMongo. PyMODM is maintained by engineers at MongoDB, Inc. and is quick
to adopt new MongoDB features. PyMODM is a “core” ODM, meaning that it
provides simple, extensible functionality that can be leveraged by other
libraries to target platforms like Django. At the same time, PyMODM is
powerful enough to be used for developing applications on its own. Complete
documentation is available on readthedocs in addition to a Gitter channel for discussing the project.

Humongolus

Humongolus is a lightweight ORM
framework for Python and MongoDB. The name comes from the combination of
MongoDB and Homunculus (the
concept of a miniature though fully formed human body). Humongolus allows
you to create models/schemas with robust validation. It attempts to be as
pythonic as possible and exposes the pymongo cursor objects whenever
possible. The code is available for download
at github. Tutorials and usage
examples are also available at GitHub.

MongoKit

The MongoKit framework
is an ORM-like layer on top of PyMongo. There is also a MongoKit
google group.

Ming

Ming (the Merciless) is a
library that allows you to enforce schemas on a MongoDB database in
your Python application. It was developed by SourceForge in the course of their migration to
MongoDB. See the introductory blog post
for more details.

MongoEngine is another ORM-like
layer on top of PyMongo. It allows you to define schemas for
documents and query collections using syntax inspired by the Django
ORM. The code is available on github; for more information, see
the tutorial.

Minimongo

minimongo is a lightweight,
pythonic interface to MongoDB. It retains pymongo’s query and update API,
and provides a number of additional features, including a simple
document-oriented interface, connection pooling, index management, and
collection & database naming helpers. The source is on github.

Manga

Manga aims to be a simpler ORM-like
layer on top of PyMongo. The syntax for defining schema is inspired by the
Django ORM, but Pymongo’s query language is maintained. The source is on
github.

MotorEngine

MotorEngine is a port of
MongoEngine to Motor, for asynchronous access with Tornado.
It implements the same modeling APIs to be data-portable, meaning that a
model defined in MongoEngine can be read in MotorEngine. The source is
available on github.