As Mike says, you cannot escape PyMongo - all other interfaces are built on top of it. These other interfaces may not be needed. ORMs, such as those used by Django, are useful when working with SQL because they reduce the complexity of creating SQL queries and schemas and analyze result sets into objects.
PyMongo, however, already has that covered requests go through a convenient and simple API, and the results obtained from MongoDB are already objects (well, in other words, in Python - with the same difference) by definition. If you feel that you really need to decorate your Mongo documents with Python objects, it's easy to add the SON manipulator to PyMongo. The best part about this approach is that you can write code directly in PyMongo and add additional features later without having to insert a new API between your code and PyMongo.
What is left? Schema creation and migration are somewhat useful, but ad-hoc is almost as easy - most likely, if you plan to use MongoDB, you still want to break out of the traditional SQL-style model. Also, if you had a fully Django-compatible ORM MongoDB, you could get some mileage. Something less than this, and you are likely to create work for yourself.
You will not regret using PyMongo directly.
One of the last options worthy of attention if you are interested in maximum efficiency is the asynchronous version of PyMongo, here: http://github.com/fiorix/mongo-async-python-driver
drg May 01 '10 at 7:02 2010-05-01 07:02
source share