資訊: | MongoEngine 是 PyMongo 之上的類似 ORM 的層。 |
---|---|
儲存庫: | https://github.com/MongoEngine/mongoengine |
作者: | 哈利馬爾 (http://github.com/hmarr) |
維護者: | 巴斯蒂安‧傑拉德 (http://github.com/bagerard) |
MongoEngine 是一個用於 MongoDB 的 Python 物件文件映射器。文件可在 https://mongoengine-odm.readthedocs.io 上取得 - 目前有教學課程、使用者指南和 API 參考。
MongoEngine 目前針對 MongoDB v3.6、v4.0、v4.4、v5.0、v6.0 和 v7.0 進行了測試。未來的版本也應該受到支持,但目前尚未進行積極測試。如果您在使用較新的 MongoDB 版本時遇到任何問題,請務必提出問題或提交拉取請求。
我們建議使用 virtualenv 和 pip。然後您可以使用python -m pip install -U mongoengine
。您可能還擁有安裝工具,因此您可以使用easy_install -U mongoengine
。另一個選擇是 pipelinev。然後,您可以使用pipenv install mongoengine
建立虛擬環境並安裝軟體包。否則,您可以從 GitHub 下載原始程式碼並執行python setup.py install
。
MongoEngine 0.20.0 取消了對 Python2 的支持
所有依賴項都可以透過 python -m pip 輕鬆安裝。至少,您需要這兩個套件才能使用 MongoEngine:
如果您使用DateTimeField
,您也可以使用更靈活的日期解析器:
如果您需要使用ImageField
或ImageGridFsProxy
:
如果需要使用訊號:
MongoEngine 程式碼的一些簡單範例:
from mongoengine import *
connect ( 'mydb' )
class BlogPost ( Document ):
title = StringField ( required = True , max_length = 200 )
posted = DateTimeField ( default = datetime . datetime . utcnow )
tags = ListField ( StringField ( max_length = 50 ))
meta = { 'allow_inheritance' : True }
class TextPost ( BlogPost ):
content = StringField ( required = True )
class LinkPost ( BlogPost ):
url = StringField ( required = True )
# Create a text-based post
> >> post1 = TextPost ( title = 'Using MongoEngine' , content = 'See the tutorial' )
> >> post1 . tags = [ 'mongodb' , 'mongoengine' ]
> >> post1 . save ()
# Create a link-based post
> >> post2 = LinkPost ( title = 'MongoEngine Docs' , url = 'hmarr.com/mongoengine' )
> >> post2 . tags = [ 'mongoengine' , 'documentation' ]
> >> post2 . save ()
# Iterate over all posts using the BlogPost superclass
> >> for post in BlogPost . objects :
... print ( '===' , post . title , '===' )
... if isinstance ( post , TextPost ):
... print ( post . content )
... elif isinstance ( post , LinkPost ):
... print ( 'Link:' , post . url )
...
# Count all blog posts and its subtypes
>> > BlogPost . objects . count ()
2
>> > TextPost . objects . count ()
1
>> > LinkPost . objects . count ()
1
# Count tagged posts
>> > BlogPost . objects ( tags = 'mongoengine' ). count ()
2
>> > BlogPost . objects ( tags = 'mongodb' ). count ()
1
要執行測試套件,請確保您在標準連接埠上執行 MongoDB 的本機實例並安裝了pytest
。然後,執行pytest tests/
。
要在每個受支援的 Python 和 PyMongo 版本上運行測試套件,您可以使用tox
。您需要確保您的環境中安裝了每個受支援的 Python 版本,然後:
# Install tox
$ python -m pip install tox
# Run the test suites
$ tox
我們歡迎貢獻!請參閱貢獻指南