MongoEngine 是一个用于与 MongoDB 交互的 Python 对象-文档映射器。
项目描述
- 信息:
MongoEngine 是 PyMongo 之上的一个类似 ORM 的层。
- 仓库::
- 维护者::
Bastien Gerard (http://github.com/bagerard)
关于
MongoEngine 是一个用于与 MongoDB 交互的 Python 对象文档映射器。文档可在 https://mongoengine-odm.readthedocs.io 查找 - 目前有 教程、用户指南 和 API 参考。
支持的 MongoDB 版本
MongoEngine 目前已针对 MongoDB v3.6、v4.0、v4.4、v5.0、v6.0 和 v7.0 进行测试。未来的版本也应得到支持,但目前没有积极测试。如果您在使用较新版本的 MongoDB 时遇到任何问题,请确保打开一个问题或提交一个拉取请求。
安装
我们建议使用 virtualenv 和 pip。然后,您可以使用 python -m pip install -U mongoengine。您也可能拥有 setuptools,因此可以使用 easy_install -U mongoengine。另一种选择是 pipenv。然后,您可以使用 pipenv install mongoengine 来创建虚拟环境并安装包。否则,您可以从 GitHub 下载源代码并运行 python setup.py install。
自 MongoEngine 0.20.0 版本起,不再支持 Python2。
依赖项
所有依赖项都可以通过 python -m pip 轻松安装。至少,您需要这两个包来使用 MongoEngine
pymongo>=3.4
如果您使用 DateTimeField,您还可以使用更灵活的日期解析器
dateutil>=2.1.0
如果您需要使用 ImageField 或 ImageGridFsProxy
Pillow>=7.0.0
如果您需要使用信号
blinker>=1.3
示例
以下是一些 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
社区
贡献
我们欢迎贡献!请参阅 贡献指南
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。