70 lines
2.7 KiB
ReStructuredText
70 lines
2.7 KiB
ReStructuredText
=======
|
|
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 >= 4. 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 **epydoc --config=epydoc-config**. 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.
|