Hoje veremos como utilizar o ODM MongoEngine com o banco de dados MongoDB através do conector pymongo.
MongoEngine
MongoEngine é um mapeador de objeto de documento (ODM) para MongoDB em Python.
Ele fornece uma maneira mais orientada a objetos de interagir com bancos de dados MongoDB em comparação com a API padrão fornecida pelo driver pymongo.
O MongoEngine permite que você defina modelos de dados como classes Python, onde cada instância da classe representa um documento no banco de dados MongoDB.
A sua instalação pode ser feita via pip::
pip install mongoengine
Pymongo
O pymongo
é uma biblioteca Python oficial que permite interagir com o MongoDB, um banco de dados NoSQL de código aberto.
Ele fornece uma API simples e intuitiva para trabalhar com o MongoDB, permitindo que os desenvolvedores criem, atualizem, consultem e excluam dados de maneira eficiente.
Posts relacionados:
O pymongo
pode ser instalado usando o pip
, que é o gerenciador de pacotes padrão do Python:
pip install pymongo
Depois de instalado, você pode importar o conector em seus scripts Python e usá-lo para se conectar a um servidor Redis e executar operações de banco de dados.
Contêiner
Para testar o código de exemplo foi utilizando o seguinte arquivo docker-compose.yaml
:
services:
db:
image: mongo:latest
container_name: MongoDB
restart: on-failure
ports:
- '27017:27017'
environment:
MONGO_INITDB_ROOT_USERNAME: dbuser
MONGO_INITDB_ROOT_PASSWORD: 123456
MONGO_INITDB_DATABASE: database_name
Exemplo de CRUD
# -*- coding: utf-8 -*-
"""CRUD - Python - MongoEngine - MongoDB."""
from mongoengine import Document, IntField, StringField, connect
db = connect(
username='dbuser',
password='123456',
host='localhost',
port=27017,
db='database_name',
authentication_source='admin',
)
# username = 'dbuser'
# password = '123456'
# host = 'localhost'
# port = 27017
# db = 'database_name'
# authentication_source = 'admin'
# URI = f'mongodb://{username}:{password}@{host}:{port}/{db}?authSource={authentication_source}'
# db = connect(host=URI)
class CollectionName(Document):
name = StringField(max_length=32)
age = IntField(min_value=0, max_value=150)
meta = {
'collection': 'collection_name'
}
def __str__(self):
return f'name={self.name}, age={self.age}'
if __name__ == "__main__":
CollectionName.drop_collection()
# Create.
print('[!] Create [!]')
user = CollectionName(name='renato', age=35).save()
obj_id = user.id
# Bulk create.
CollectionName.objects.insert(
[
CollectionName(name='Helena', age=20),
CollectionName(name='João', age=50),
],
)
# Read.
print('\n[!] Read [!]')
print(CollectionName.objects)
print(CollectionName.objects(id=obj_id))
print(CollectionName.objects(age__gt=20))
# Update.
print('\n[!] Update [!]')
print(CollectionName.objects(id=obj_id))
CollectionName.objects(id=obj_id).update_one(
name='joão',
)
print(CollectionName.objects(id=obj_id))
# Delete.
print('\n[!] Delete [!]')
print(CollectionName.objects(id=obj_id))
CollectionName.objects(id=obj_id).first().delete()
print(CollectionName.objects(id=obj_id))
db.close()
Conclusão
O MongoDB é uma poderosa ferramenta de banco de dados NoSQL que oferece flexibilidade, escalabilidade e desempenho para uma variedade de aplicações.
Compreender os conceitos básicos, como documentos, coleções, consultas e índices, pode ajudá-lo a utilizar o MongoDB de forma eficaz em seus projetos de desenvolvimento.