Pular para conteúdo

Primeiros passos

Neste guia, orientaremos você nas etapas iniciais para começar a usar o PyODMongo, um Mapeador de Objetos-Documentos (ODM) do MongoDB em Python. Abordaremos a criação de um motor, a definição de um modelo, o salvamento de dados e a leitura do banco de dados.

Criando o motor

Para começar a usar o PyODMongo, primeiro você precisa criar uma instância da classe AsyncDbEngine ou DbEngine para se conectar ao seu servidor MongoDB. Veja como você pode fazer isso:

from pyodmongo import AsyncDbEngine, DbModel, DbResponse
from typing import ClassVar
import asyncio

engine = AsyncDbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


box = Product(name="Box", price="5.99", is_available=True)


async def main():
    response: DbResponse = await engine.save(box)


asyncio.run(main())
from pyodmongo import DbEngine, DbModel, DbResponse
from typing import ClassVar

engine = DbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


box = Product(name="Box", price="5.99", is_available=True)

response: DbResponse = engine.save(box)

Certifique-se de substituir mongodb://localhost:27017 pela string de conexão com seu banco de dados do MongoDB e my_db pelo nome do banco.

Tip

Ao criar um motor, você pode passar o parâmetro tz_info nas classes AsyncDbEngine ou DbEngine que define o fuso horário padrão para todas as operações de find_one e find_many realizadas através deste motor, a menos que tz_info também seja passado nos métodos find_one e find_many. Neste caso o fuso horário dos métodos de busca terão prevalência.

Definindo um modelo

A seguir, você definirá um modelo que herda de DbModel. Este modelo representa a estrutura dos seus documentos MongoDB. Você também precisará criar o atributo _collection, que carregará a string do nome da coleção a ser salva no banco de dados.

from pyodmongo import AsyncDbEngine, DbModel, DbResponse
from typing import ClassVar
import asyncio

engine = AsyncDbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


box = Product(name="Box", price="5.99", is_available=True)


async def main():
    response: DbResponse = await engine.save(box)


asyncio.run(main())
from pyodmongo import DbEngine, DbModel, DbResponse
from typing import ClassVar

engine = DbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


box = Product(name="Box", price="5.99", is_available=True)

response: DbResponse = engine.save(box)

Neste exemplo, criamos uma classe Product, que herda de DbModel, para definir a estrutura de nossos documentos no MongoDB.

Salvando dados

Você pode salvar dados no MongoDB usando o método save() da sua instância AsyncDbEngine ou DbEngine.

from pyodmongo import AsyncDbEngine, DbModel, DbResponse
from typing import ClassVar
import asyncio

engine = AsyncDbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


box = Product(name="Box", price="5.99", is_available=True)


async def main():
    response: DbResponse = await engine.save(box)


asyncio.run(main())
from pyodmongo import DbEngine, DbModel, DbResponse
from typing import ClassVar

engine = DbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


box = Product(name="Box", price="5.99", is_available=True)

response: DbResponse = engine.save(box)

Este código cria um novo documento usando os dados fornecidos e salva no MongoDB.

Lendo do banco de dados

Para ler dados do banco de dados, você pode usar o método find_one() da sua instância AsyncDbEngine ou DbEngine.

from pyodmongo import AsyncDbEngine, DbModel
from typing import ClassVar
import asyncio

engine = AsyncDbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


async def main():
    query = Product.name == "Box"
    box: Product = await engine.find_one(Model=Product, query=query)


asyncio.run(main())
from pyodmongo import DbEngine, DbModel
from typing import ClassVar

engine = DbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


query = Product.name == "Box"
box: Product = engine.find_one(Model=Product, query=query)

Este código consulta o banco de dados em busca de um produto com o nome 'Box' e cria um objeto do tipo Product com o documento encontrado no banco de dados.

Estes são os primeiros passos para você começar a usar o PyODMongo. Agora você pode criar, salvar e ler dados de seu banco de dados MongoDB usando este Mapeador de Objetos-Documentos MongoDB em Python.