PyMongo

pymongo 是mongodb提供的一个Python版本的驱动。拥有基本的操作数据库的能力,但是因为我使用的Web框架是Django,Django本身提供了ORM功能(支持有限的数据库比如SQLite),但是如果使用的MongoDB的话就需要使用pymongo而它是没有ORM功能的,如果需要这个功能可以看下mongo-engine。

安装

如果已经安装了PIP,可以直接使用命令

>pip install pymongo //指定版本:>pip install pymongo==2.8

使用

pymongo 使用起来非常简单,只要创建一个MongoClient对象设置数据库地址就行了

>>> from pymongo import MongoClient
>>> client = MongoClient('localhost', 27017)//or MongoClient('mongodb://localhost:27017/')

拿到数据库,只需要用 db = client.test_database 或者 db = client['test-database']

Mongodb中的Collection相当于SQL数据库中的表,Collection中的Document相当于SQL中的一条记录。使用pymongo拿到一个Collection和数据库一样 collection = db.test_collection (collection = db[‘test-collection’]),Document是一种像json一样的数据。

MongoClient 提供二里数据库的链接和关闭功能,关闭一个链接只要调用它的close方法client.close()

CRUD操作

Collection 对象提供了基本的CRUD操作, pymongo 在Python代码中表示每条数据(Document)使用的数据类型是dict类型。

插入数据

>>> post = {"author": "Mike",
...         "text": "My first blog post!",
...         "tags": ["mongodb", "python", "pymongo"],
...         "date": datetime.datetime.utcnow()}
>>> posts = db.posts
>>> post_id = posts.insert_one(post).inserted_id
>>> post_id
ObjectId('...')

查找一条数据

>>> posts.find_one({"author": "Mike"})
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}

查找多条数据会返回一个Cursor对象,可以用Cursor对象遍历返回的Document

>>> for post in posts.find():
...   post
...
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
{u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'bulk', u'insert']}
{u'date': datetime.datetime(2009, 11, 10, 10, 45), u'text': u'and pretty easy too!', u'_id': ObjectId('...'), u'author': u'Eliot', u'title': u'MongoDB is fun'}

具体的使用见单文档:https://api.mongodb.org/python/current/api/pymongo/collection.html#module-pymongo.collection

nTop 01 May 2015
blog comments powered by Disqus