上文:http://blog.csdn.net/u013205877/article/details/75957573
PyMongo是一个低级的MongoDB的Python驱动器(我一般称为客户端),它封装了 MongoDB API,并通过JSON与MongoDB通信,PyMongo将MongoDB的数据映射成Python的内置类型。
MongoEngine 是一个Document-Object Mapper (想一下ORM, 但它是针对文档型数据库),Python通过它与MongoDB交互。你可能会说那PyMongo也是ORM啊,在Python中一切都是对象,但我们所说的ORM中的Object在指Python中的自定义类,而不是内置类型。MongoEngine或MongoKit将MongoDB的数据映射成自定义类实例,它们都是基于PyMongo的。
我们可以跟关系型数据库的Python客户端MySQLdb,以及ORM SQLAlchemy/Django ORM比较一下,PyMongo相当于MySQLdb,MongoEngine相当于SQLAlchemy,SQLAlchemy是基于MySQLdb之上的,MongoEngine是基于PyMongo的。
MongoEngine是一个ORM
- 安装
pip install mongoengine
- 连接
from mongoengine import *
connect(‘mongoengine_test’,host=‘localhost’,port=27017)
- 定义文档中的存放数据的字段,还要继承Document类,在这里定义好模型限制,以后save的时候做验证用得着
import datetime
class Post(Document):
title = StringField(required=True, max_length=200)
content = StringField(required=True)
author = StringField(required=True, max_length=50)
published = DateTimeField(default=datetime.datetime.now)
required:设置必须;
default:如果没有其他值给出使用指定的默认值
unique:确保集合中没有其他document有此字段的值相同
choices:确保该字段的值等于数组中的给定值之一
4.完整的插入保存过程
from mongoengine import *
connect('mongoengine_test',host='localhost',port=27017)
import datetime
class Post(Document):
title = StringField(required=True, max_length=200)
content = StringField(required=True)
author = StringField(required=True, max_length=50)
published = DateTimeField(default=datetime.datetime.now)
post_1 = Post(
title='Sample Post',
content='Some engaging',
author='scott'
)
post_1.save()
print(post_1.title)
post_1.title = '张昆'
post_1.save()
print(post_1.title)
下面就是"向对象的特性"和"关联其他文档"了以及更多特性,进阶内容到这看下:http://docs.mongoengine.org/guide/index.html