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)
https://travis-ci.org/MongoEngine/mongoengine.svg?branch=masterhttps://coveralls.io/repos/github/MongoEngine/mongoengine/badge.svg?branch=masterCode Health

关于

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+的问题。

安装

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

如果需要使用ImageFieldImageGridFsProxy

  • 枕头>;=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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
尝试连接到Red5服务器时出现java问题   java实现Runnable的类被认为是ExecutorServices的“Runnable任务”?   java struts2类中的多个@validation   java未能应用插件[class'org.gradle.api.plugins.scala.ScalaBasePlugin']:gradle v2。13   如何使用Java流仅收集长度最大的元素?   从spring引导应用程序连接到firestore的java引发空指针异常   java从SQLite插入和获取真实数据类型会为连续插入获取空值吗?   当存在未知数量的空格时,使用java替代正向查找   部署如何为当今的浏览器部署java小程序(小程序、嵌入、对象)?   @OneToMany和@ManyToOne@Formula之间的java双向关系返回null   java为什么在我的例子中,协议缓冲区的性能比JSON差?   如何部署混合C++/Java(JNI)应用程序?   java如何在程序中显示字符串的完整信息。反恐精英?   java在Hibernate中从持久性上下文中分离实体中的实体