Info: | MongoEngine ist eine ORM-ähnliche Ebene auf PyMongo. |
---|---|
Repository: | https://github.com/MongoEngine/mongoengine |
Autor: | Harry Marr (http://github.com/hmarr) |
Betreuer: | Bastien Gerard (http://github.com/bagerard) |
MongoEngine ist ein Python Object-Document Mapper für die Arbeit mit MongoDB. Die Dokumentation ist unter https://mongoengine-odm.readthedocs.io verfügbar. Derzeit gibt es ein Tutorial, ein Benutzerhandbuch und eine API-Referenz.
MongoEngine wird derzeit gegen MongoDB v3.6, v4.0, v4.4, v5.0, v6.0 und v7.0 getestet. Zukünftige Versionen sollten ebenfalls unterstützt werden, werden jedoch derzeit nicht aktiv getestet. Öffnen Sie unbedingt ein Issue oder senden Sie eine Pull-Anfrage, wenn Sie Probleme mit neueren MongoDB-Versionen haben.
Wir empfehlen die Verwendung von Virtualenv und Pip. Sie können dann python -m pip install -U mongoengine
verwenden. Möglicherweise verfügen Sie auch über Setuptools und können daher easy_install -U mongoengine
verwenden. Eine weitere Option ist Pipenv. Anschließend können Sie mit pipenv install mongoengine
sowohl die virtuelle Umgebung erstellen als auch das Paket installieren. Andernfalls können Sie die Quelle von GitHub herunterladen und python setup.py install
ausführen.
Die Unterstützung für Python2 wurde mit MongoEngine 0.20.0 eingestellt
Alle Abhängigkeiten können einfach über python -m pip installiert werden. Um MongoEngine nutzen zu können, benötigen Sie mindestens diese beiden Pakete:
Wenn Sie ein DateTimeField
verwenden, können Sie möglicherweise auch einen flexibleren Datumsparser verwenden:
Wenn Sie ein ImageField
oder ImageGridFsProxy
verwenden müssen:
Wenn Sie Signale verwenden müssen:
Einige einfache Beispiele dafür, wie MongoEngine-Code aussieht:
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
Um die Testsuite auszuführen, stellen Sie sicher, dass Sie eine lokale Instanz von MongoDB auf dem Standardport ausführen und pytest
installiert haben. Führen Sie dann pytest tests/
aus.
Um die Testsuite auf jeder unterstützten Python- und PyMongo-Version auszuführen, können Sie tox
verwenden. Sie müssen sicherstellen, dass jede unterstützte Python-Version in Ihrer Umgebung installiert ist, und dann:
# Install tox
$ python -m pip install tox
# Run the test suites
$ tox
Wir freuen uns über Beiträge! Siehe Beitragsrichtlinien