Informações: | MongoEngine é uma camada semelhante a ORM sobre PyMongo. |
---|---|
Repositório: | https://github.com/MongoEngine/mongoengine |
Autor: | Harry Marr (http://github.com/hmarr) |
Mantenedor: | Bastien Gerard (http://github.com/bagerard) |
MongoEngine é um mapeador de objetos-documentos Python para trabalhar com MongoDB. A documentação está disponível em https://mongoengine-odm.readthedocs.io - atualmente há um tutorial, um guia do usuário e uma referência de API.
O MongoEngine está atualmente testado no MongoDB v3.6, v4.0, v4.4, v5.0, v6.0 e v7.0. Versões futuras também devem ser suportadas, mas não são testadas ativamente no momento. Certifique-se de abrir um problema ou enviar uma solicitação pull se tiver algum problema com versões mais recentes do MongoDB.
Recomendamos o uso do virtualenv e do pip. Você pode então usar python -m pip install -U mongoengine
. Você também pode ter setuptools e, portanto, usar easy_install -U mongoengine
. Outra opção é pipenv. Você pode então usar pipenv install mongoengine
para criar o ambiente virtual e instalar o pacote. Caso contrário, você pode baixar o código-fonte do GitHub e executar python setup.py install
.
O suporte para Python2 foi eliminado com MongoEngine 0.20.0
Todas as dependências podem ser facilmente instaladas via python -m pip. No mínimo, você precisará destes dois pacotes para usar o MongoEngine:
Se você utilizar um DateTimeField
, também poderá usar um analisador de data mais flexível:
Se você precisar usar um ImageField
ou ImageGridFsProxy
:
Se você precisar usar sinais:
Alguns exemplos simples da aparência do 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 executar o conjunto de testes, certifique-se de estar executando uma instância local do MongoDB na porta padrão e de ter pytest
instalado. Em seguida, execute pytest tests/
.
Para executar o conjunto de testes em todas as versões suportadas do Python e PyMongo, você pode usar tox
. Você precisará certificar-se de ter cada versão suportada do Python instalada em seu ambiente e então:
# Install tox
$ python -m pip install tox
# Run the test suites
$ tox
Aceitamos contribuições! Veja as diretrizes de contribuição