Información: | MongoEngine es una capa tipo ORM encima de PyMongo. |
---|---|
Repositorio: | https://github.com/MongoEngine/mongoengine |
Autor: | Harry Marr (http://github.com/hmarr) |
Mantenedor: | Bastien Gerard (http://github.com/bagerard) |
MongoEngine es un asignador de documentos-objetos de Python para trabajar con MongoDB. La documentación está disponible en https://mongoengine-odm.readthedocs.io; actualmente hay un tutorial, una guía del usuario y una referencia de API.
MongoEngine se prueba actualmente con MongoDB v3.6, v4.0, v4.4, v5.0, v6.0 y v7.0. Las versiones futuras también deberían ser compatibles, pero no se están probando activamente por el momento. Asegúrese de abrir un problema o enviar una solicitud de extracción si tiene algún problema con versiones más recientes de MongoDB.
Recomendamos el uso de virtualenv y de pip. Luego puedes usar python -m pip install -U mongoengine
. También puede tener herramientas de configuración y, por lo tanto, puede usar easy_install -U mongoengine
. Otra opción es pipenv. Luego puede usar pipenv install mongoengine
para crear el entorno virtual e instalar el paquete. De lo contrario, puede descargar el código fuente de GitHub y ejecutar python setup.py install
.
El soporte para Python2 se eliminó con MongoEngine 0.20.0
Todas las dependencias se pueden instalar fácilmente mediante python -m pip. Como mínimo, necesitarás estos dos paquetes para usar MongoEngine:
Si utiliza un DateTimeField
, también puede utilizar un analizador de fechas más flexible:
Si necesita utilizar ImageField
o ImageGridFsProxy
:
Si necesita utilizar señales:
Algunos ejemplos simples de cómo se ve el código 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
Para ejecutar el conjunto de pruebas, asegúrese de estar ejecutando una instancia local de MongoDB en el puerto estándar y de tener instalado pytest
. Luego, ejecute pytest tests/
.
Para ejecutar el conjunto de pruebas en todas las versiones compatibles de Python y PyMongo, puede utilizar tox
. Deberá asegurarse de tener instaladas todas las versiones compatibles de Python en su entorno y luego:
# Install tox
$ python -m pip install tox
# Run the test suites
$ tox
¡Agradecemos las contribuciones! Ver las pautas de contribución