Go to file
2009-08-27 15:20:54 -04:00
examples example of using the auto-reference functionality 2009-03-23 17:57:34 -04:00
gridfs fix for gridfs seek on Python < 2.5 2009-08-24 12:07:03 -04:00
pymongo encode tuple as list 2009-08-26 15:36:07 -04:00
test encode tuple as list 2009-08-26 15:36:07 -04:00
tools minor: return posted data in benchmark script 2009-08-27 15:20:54 -04:00
.gitignore clean out pyd build artifacts as well MINOR 2009-06-08 16:49:54 -04:00
epydoc-config add target for setup.py to generate versioned docs: python setup.py doc 2009-04-14 16:28:21 -04:00
ez_setup.py starting on a setup.py 2009-01-22 14:30:41 -05:00
LICENSE include root LICENSE file in addition to individual headers 2009-06-22 10:20:44 -04:00
MANIFEST.in minor: tweak MANIFEST 2009-07-16 11:33:35 -04:00
README.rst add Credits 2009-08-20 10:21:45 -04:00
setup.py fix some things that broke Python 2.3 support since last I tried it 2009-06-18 14:55:54 -04:00

=======
PyMongo
=======
:Info: See `the mongo site <http://www.mongodb.org>`_ for more information. See `github <http://github.com/mongodb/mongo-python-driver/tree>`_ for the latest source.
:Author: Mike Dirolf <mike@10gen.com>

About
=====
The PyMongo distribution contains tools for interacting with the Mongo database from Python.
The ``pymongo`` package is a native Python driver for the Mongo database. The ``gridfs``
package is a `gridfs <http://www.mongodb.org/display/DOCS/GridFS+Specification>`_
implementation on top of ``pymongo``.

Installation
============
If you have `setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_ installed you should be able to do **easy_install pymongo** to install PyMongo. Otherwise you can download the project source and do **python setup.py install** to install.

Dependencies
============
The PyMongo distribution has been tested on Python 2.x, where x >= 3. On Python 2.3 the optional
C extension will not be built. This will negatively affect performance, but everything should still work.

Additional dependencies are:

- `ElementTree <http://effbot.org/zone/element-index.htm>`_ (this is included with Python >= 2.5)
- (to generate documentation) `epydoc <http://epydoc.sourceforge.net/>`_
- (to auto-discover tests) `nose <http://somethingaboutorange.com/mrl/projects/nose/>`_

Examples
========
Here's a basic example (for more see the *examples/* directory):

>>> from pymongo.connection import Connection
>>> connection = Connection("localhost", 27017)
>>> db = connection.test
>>> db.name()
u'test'
>>> db.my_collection
Collection(Database(Connection('localhost', 27017), u'test'), u'my_collection')
>>> db.my_collection.save({"x": 10})
ObjectId('D\x87\xdd\xe8\xd6\x0f\x89\xfc\xab\x06\xac\x8e')
>>> db.my_collection.save({"x": 8})
ObjectId('\xde\x0b\xec^\xdc\x11`\x12\xf8\xeb/\xcf')
>>> db.my_collection.save({"x": 11})
ObjectId('\t6\xc6\x07\xb3\xfc\x87\xc4\x82\x04\x0f\\')
>>> db.my_collection.find_one()
{u'x': 10, u'_id': ObjectId('D\x87\xdd\xe8\xd6\x0f\x89\xfc\xab\x06\xac\x8e')}
>>> for item in db.my_collection.find():
...     print item["x"]
...
10
8
11
>>> from pymongo import ASCENDING
>>> db.my_collection.create_index("x", ASCENDING)
u'x_1'
>>> for item in db.my_collection.find().sort("x", ASCENDING):
...     print item["x"]
...
8
10
11
>>> [item["x"] for item in db.my_collection.find().limit(2).skip(1)]
[8, 11]

Documentation
=============
You will need `epydoc <http://epydoc.sourceforge.net/>`_ installed to generate the documentation. Documentation can be generated by running **python setup.py doc**. Generated documentation can be found in the *doc/* directory.

Testing
=======
The easiest way to run the tests is to install `nose <http://somethingaboutorange.com/mrl/projects/nose/>`_ (**easy_install nose**) and run **nosetests** or **python setup.py test** in the root of the distribution. Tests are located in the *test/* directory.

Credits
=======
Thanks to (in no particular order) (if you belong here and are missing please let us know):

- moe at mbox dot bz: turn off nagle
- Michael Stephens (mikejs): seek and tell for read mode GridFile