Como Salvar Dados de um Formulário ou Dicionário no MongoDB com Python

Como Salvar Dados de um Formulário ou Dicionário no MongoDB com Python

Salvar estruturas de dados dinâmicas, como dicionários do Python ou payloads JSON de formulários web, é uma das tarefas mais comuns e eficientes no MongoDB. Como se trata de um banco de dados NoSQL orientado a documentos, os dicionários são mapeados nativamente para o formato BSON sem a necessidade de esquemas rígidos ou conversões complexas. A biblioteca oficial pymongo permite realizar a conexão e a inserção dessas estruturas com poucas linhas de código.

Python
from pymongo import MongoClient

# Conecta ao servidor MongoDB local (ajuste a URI para o seu ambiente ou Mongo Atlas)
client = MongoClient('mongodb://localhost:27017/')

# Seleciona o banco de dados 'empresa_db' e a coleção 'clientes'
db = client['empresa_db']
colecao = db['clientes']

# Dados simulados vindos de um formulário web em formato de dicionário
dados_formulario = {
    'nome': 'Mariana Souza',
    'email': 'mariana.souza@email.com',
    'cargo': 'Desenvolvedora Backend',
    'interesses': ['Python', 'NoSQL', 'Arquitetura de Software']
}

# Inserção de um único documento na coleção
resultado = colecao.insert_one(dados_formulario)

# O MongoDB gera automaticamente uma chave primária única (_id) caso ela não seja informada
print("Documento inserido com sucesso! ID:", resultado.inserted_id)

# Consulta rápida para confirmar a gravação dos dados
cliente_salvo = colecao.find_one({'_id': resultado.inserted_id})
print("Dados recuperados do banco:", cliente_salvo)

# Encerra a conexão com o banco
client.close()
  • Mapeamento Direto (Dict para BSON): O pymongo converte automaticamente tipos de dados do Python (listas, dicionários aninhados, strings e inteiros) para o formato BSON do MongoDB.

  • Geração do _id: Se o dicionário não contiver o campo _id, o MongoDB criará automaticamente um ObjectId exclusivo de 12 bytes no momento da inserção.

  • Retorno do insert_one(): O método retorna um objeto do qual é possível extrair inserted_id para confirmar o sucesso da gravação ou vincular o documento a outras operações.

  • Inserção em Lote com insert_many(): Caso receba uma lista de dicionários vinda de um processamento em massa, utilize colecao.insert_many(lista_de_dicts) para otimizar o I/O de rede.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server