Package: balala-mongoengine
Info:MongoEngine is an ORM-like layer on top of PyMongo.Repository:https://github.com/MongoEngine/mongoengineAuthor:Harry Marr (http://github.com/hmarr)Maintainer:Stefan Wójcik (http://github.com/wojcikstefan)AboutMongoEngine is a Python Object-Document Mapper for working with MongoDB.
Documentation is available athttps://mongoengine-odm.readthedocs.io- there
is currently atutorial,
auser guide, and
anAPI reference.Supported MongoDB VersionsMongoEngine is currently tested against MongoDB v2.6, v3.0, v3.2, v3.4 and v3.6. Future
versions should be supported as well, but aren’t actively tested at the moment.
Make sure to open an issue or submit a pull request if you experience any
problems with MongoDB v3.6+.InstallationWe recommend the use ofvirtualenvand ofpip. You can then usepip install-Umongoengine.
You may also havesetuptoolsand thus you can useeasy_install-Umongoengine. Another option ispipenv. You can then usepipenv install mongoengineto both create the virtual environment and install the package. Otherwise, you can
download the source fromGitHuband
runpython setup.py install.DependenciesAll of the dependencies can easily be installed viapip.
At the very least, you’ll need these two packages to use MongoEngine:pymongo>=3.8six>=1.10.0If you utilize aDateTimeField, you might also use a more flexible date parser:dateutil>=2.1.0If you need to use anImageFieldorImageGridFsProxy:Pillow>=2.0.0ExamplesSome simple examples of what MongoEngine code looks like: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()1TestsTo run the test suite, ensure you are running a local instance of MongoDB on
the standard port and havenoseinstalled. Then, runpython setup.py nosetests.To run the test suite on every supported Python and PyMongo version, you can
usetox. You’ll need to make sure you have each supported Python version
installed in your environment and then:# Install tox$pipinstalltox# Run the test suites$toxIf you wish to run a subset of tests, use the nosetests convention:# Run all the tests in a particular test file$pythonsetup.pynosetests--teststests/fields/fields.py# Run only particular test class in that file$pythonsetup.pynosetests--teststests/fields/fields.py:FieldTest# Use the -s option if you want to print some debug statements or use pdb$pythonsetup.pynosetests--teststests/fields/fields.py:FieldTest-sCommunityMongoEngine Users mailing listMongoEngine Developers mailing listContributingWe welcome contributions! See theContribution guidelines