上文: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 datetimeclass 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 datetimeclass 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