跳转到主要内容

MongoEngine 是一个用于与 MongoDB 交互的 Python 对象-文档映射器。

项目描述

信息:

MongoEngine 是 PyMongo 之上的一个类似 ORM 的层。

仓库::

https://github.com/MongoEngine/mongoengine

作者::

Harry Marr (http://github.com/hmarr)

维护者::

Bastien Gerard (http://github.com/bagerard)

https://travis-ci.org/MongoEngine/mongoengine.svg?branch=master https://coveralls.io/repos/github/MongoEngine/mongoengine/badge.svg?branch=master https://img.shields.io/badge/code%20style-black-000000.svg https://pepy.tech/badge/mongoengine/month https://img.shields.io/pypi/v/mongoengine.svg https://readthedocs.org/projects/mongoengine-odm/badge/?version=latest

关于

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 时遇到任何问题,请确保打开一个问题或提交一个拉取请求。

安装

我们建议使用 virtualenvpip。然后,您可以使用 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

如果您需要使用 ImageFieldImageGridFsProxy

  • 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

社区

贡献

我们欢迎贡献!请参阅 贡献指南

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

mongoengine-0.29.1.tar.gz (168.7 kB 查看散列)

上传时间 源代码

构建分发

mongoengine-0.29.1-py3-none-any.whl (112.4 kB 查看散列)

上传时间 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面