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.