mongoenginemongoengine的副本是用于使用mongodb的python对象文档映射器。
balala-mongoengine的Python项目详细描述
Info: | MongoEngine is an ORM-like layer on top of PyMongo. |
---|---|
Repository: | https://github.com/MongoEngine/mongoengine |
Author: | Harry Marr (http://github.com/hmarr) |
Maintainer: | Stefan Wójcik (http://github.com/wojcikstefan) |
关于
mongoengine是一个用于处理mongodb的python对象文档映射器。 文档可以在https://mongoengine-odm.readthedocs.io-那里找到 当前是tutorial, auser guide,和 一个API reference。
支持的MongoDB版本
MongoEngine目前正在针对MongoDB v2.6、v3.0、v3.2、v3.4和v3.6进行测试。未来 版本也应该得到支持,但目前还没有进行主动测试。 如果您遇到任何问题,请确保打开问题或提交请求 MongoDB v3.6+的问题。
安装
我们建议使用virtualenv和 pip。然后可以使用pip install -U mongoengine。 你可能还有setuptools 因此您可以使用easy_install -U mongoengine。另一个选择是 pipenv。然后可以使用pipenv install mongoengine 创建虚拟环境并安装软件包。否则,你可以 从GitHub下载源代码,然后 运行python setup.py install。
依赖关系
所有依赖项都可以通过pip轻松安装。 至少,您需要这两个软件包才能使用MongoEngine:
- Pymongo=3.8
- 六>;=1.10.0
- DateUtil=2.1.0
如果需要使用ImageField或ImageGridFsProxy:
- 枕头>;=2.0.0
示例
MongoEngine代码的一些简单示例:
frommongoengineimport*connect('mydb')classBlogPost(Document):title=StringField(required=True,max_length=200)posted=DateTimeField(default=datetime.datetime.utcnow)tags=ListField(StringField(max_length=50))meta={'allow_inheritance':True}classTextPost(BlogPost):content=StringField(required=True)classLinkPost(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>>>forpostinBlogPost.objects:...print'===',post.title,'==='...ifisinstance(post,TextPost):...printpost.content...elifisinstance(post,LinkPost):...print'Link:',post.url...print...# 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的本地实例 标准端口并已安装nose。然后,运行python setup.py nosetests。
要在每个受支持的python和pymongo版本上运行测试套件,可以 使用tox。您需要确保每个受支持的python版本 安装在您的环境中,然后:
# Install tox $ pip install tox # Run the test suites $ tox
如果要运行测试的子集,请使用nosetests约定:
# Run all the tests in a particular test file $ python setup.py nosetests --tests tests/fields/fields.py # Run only particular test class in that file $ python setup.py nosetests --tests tests/fields/fields.py:FieldTest # Use the -s option if you want to print some debug statements or use pdb $ python setup.py nosetests --tests tests/fields/fields.py:FieldTest -s
贡献
欢迎投稿!参见Contribution guidelines