Laboratório de Banco de
Dados
Integração MongoDB com Python e construção de API
RESTPyMongo, Flask/FastAPI e Postman
Objetivos
Ao final da aula, você deverá ser capaz de:
• conectar Python ao MongoDB;
• executar operações CRUD com PyMongo;
• entender o papel de uma API REST;
• criar endpoints básicos;
• testar requisições no Postman;
• relacionar aplicação, API e banco NoSQL.
28/04/2026 Professor Paulo Nunes 2
Arquitetura geral da solução
Cliente API REST Python PyMongo MongoDB
Exemplo:
• Postman envia uma requisição HTTP
• Flask/FastAPI recebe a requisição
• PyMongo executa a operação no MongoDB
• MongoDB retorna os dados
• API devolve resposta em JSON
28/04/2026 Professor Paulo Nunes 3
Preparação do ambiente
Ferramentas: Comandos iniciais:
• Python 3 • python –version
• VS Code • pip –version
• MongoDB Community Server • pip install pymongo flask
• MongoDB Compass
• PyMongoFlask ou
FastAPIPostman
28/04/2026 Professor Paulo Nunes 4
Banco de exemplo: sistema acadêmico
• Database: lab_bd Documento exemplo:
• Collection: alunos
{
"nome": "Ana Beatriz",
"matricula": "2026001",
"curso": "ADS",
"semestre": 2,
"media": 8.5,
"ativo": true
}
28/04/2026 Professor Paulo Nunes 5
Conectando Python ao MongoDB
Código:
from pymongo import MongoClient
cliente = MongoClient("mongodb://localhost:27017/")
banco = cliente["lab_bd"]
colecao = banco["alunos"]
print("Conexão realizada com sucesso!")
28/04/2026 Professor Paulo Nunes 6
Inserindo um documento com PyMongo
Código:
aluno = {
"nome": "Ana Beatriz",
"matricula": "2026001",
"curso": "ADS",
"semestre": 2,
"media": 8.5,
"ativo": True
}
resultado = colecao.insert_one(aluno)
print(resultado.inserted_id)
28/04/2026 Professor Paulo Nunes 7
Inserindo vários documentos
Código:
alunos = [
{"nome": "Carlos Lima", "matricula": "2026002", "curso": "ADS",
"semestre": 1, "media": 7.2, "ativo": True},
{"nome": "Marina Souza", "matricula": "2026003", "curso": "SI",
"semestre": 3, "media": 9.1, "ativo": True},
{"nome": "João Pedro", "matricula": "2026004", "curso": "ADS",
"semestre": 2, "media": 5.8, "ativo": False}
]
resultado = colecao.insert_many(alunos)
print(resultado.inserted_ids)
28/04/2026 Professor Paulo Nunes 8
Consultando documentos
Código:
for aluno in [Link]():
print(aluno)
Consulta com filtro:
for aluno in [Link]({"curso": "ADS"}):
print(aluno)
28/04/2026 Professor Paulo Nunes 9
Consultas com operadores
Código:
for aluno in [Link]({"media": {"$gte": 7}}):
print(aluno)
Operadores comuns:
$gt maior que
$gte maior ou igual
$lt menor que
$lte menor ou igual
$ne diferente
$in dentro de uma lista
28/04/2026 Professor Paulo Nunes 10
Exercício rápido:
Crie uma consulta que liste apenas alunos com média menor que
6.
Resposta esperada:
[Link]({"media": {"$lt": 6}})
28/04/2026 Professor Paulo Nunes 11
Atualizando documentos
Código:
colecao.update_one(
{"matricula": "2026004"},
{"$set": {"media": 6.5, "ativo": True}}
)
28/04/2026 Professor Paulo Nunes 12
Excluindo documentos
Código:
colecao.delete_one({"matricula": "2026004"})
Exclusão múltipla:
colecao.delete_many({"ativo": False})
28/04/2026 Professor Paulo Nunes 13
Tratamento de erros
Código:
try:
cliente = MongoClient("mongodb://localhost:27017/",
serverSelectionTimeoutMS=3000)
cliente.server_info()
print("Conectado ao MongoDB")
except Exception as erro:
print("Erro ao conectar:", erro)
28/04/2026 Professor Paulo Nunes 14
O que é uma API REST?
API REST é uma interface que permite comunicação entre
sistemas usando HTTP.
Métodos principais:
GET: consultar dados
POST: cadastrar dados
PUT/PATCH: atualizar dados
DELETE: excluir dados
28/04/2026 Professor Paulo Nunes 15
Criando a primeira API com Flask
• Código:
from flask import Flask, jsonify
app = Flask(name)
@[Link]("/")
def home():
return jsonify({"mensagem": "API de alunos funcionando"})
[Link](debug=True)
28/04/2026 Professor Paulo Nunes 16
Integrando Flask com MongoDB
Código: @[Link]("/alunos",
from flask import Flask, jsonify methods=["GET"])
from pymongo import def listar_alunos():
MongoClient alunos = []
for aluno in [Link]():
app = Flask(name) aluno["_id"] = str(aluno["_id"])
cliente = [Link](aluno)
MongoClient("mongodb://localh return jsonify(alunos)
ost:27017/") [Link](debug=True)
banco = cliente["lab_bd"]
colecao = banco["alunos"]
28/04/2026 Professor Paulo Nunes 17
Criando aluno via POST
Código:
from flask import request
@[Link]("/alunos", methods=["POST"])
def cadastrar_aluno():
dados = [Link]
resultado = colecao.insert_one(dados)
return jsonify({
"mensagem": "Aluno cadastrado com sucesso",
"id": str(resultado.inserted_id)
}), 201
28/04/2026 Professor Paulo Nunes 18
Buscando aluno por matrícula
Código:
@[Link]("/alunos/<matricula>", methods=["GET"])
def buscar_aluno(matricula):
aluno = colecao.find_one({"matricula": matricula})
if aluno:
aluno["_id"] = str(aluno["_id"])
return jsonify(aluno)
return jsonify({"erro": "Aluno não encontrado"}), 404
28/04/2026 Professor Paulo Nunes 19
Atualizando aluno
Código:
@[Link]("/alunos/<matricula>", methods=["PUT"])
def atualizar_aluno(matricula):
dados = [Link]
resultado = colecao.update_one(
{"matricula": matricula},
{"$set": dados}
)
if resultado.matched_count == 0:
return jsonify({"erro": "Aluno não encontrado"}), 404
return jsonify({"mensagem": "Aluno atualizado com sucesso"})
28/04/2026 Professor Paulo Nunes 20
Excluindo aluno
Código:
@[Link]("/alunos/<matricula>", methods=["DELETE"])
def excluir_aluno(matricula):
resultado = colecao.delete_one({"matricula": matricula})
if resultado.deleted_count == 0:
return jsonify({"erro": "Aluno não encontrado"}), 404
return jsonify({"mensagem": "Aluno excluído com sucesso"})
28/04/2026 Professor Paulo Nunes 21
Testando no Postman
Testes: Exemplo de JSON para POST:
GET /alunos {
GET /alunos/2026001 "nome": "Lucas Martins",
POST /alunos "matricula": "2026005",
PUT /alunos/2026001 "curso": "ADS",
DELETE /alunos/2026001 "semestre": 1,
"media": 8.0,
"ativo": true
}
28/04/2026 Professor Paulo Nunes 22
Exercício guiado 1
• Crie uma rota GET /alunos/aprovados
• A rota deve retornar alunos com média maior ou igual a 7.
28/04/2026 Professor Paulo Nunes 23
Exercício guiado 2
• Crie uma rota GET /alunos/curso/<curso>
• A rota deve listar alunos de um curso específico.
28/04/2026 Professor Paulo Nunes 24
Exercício guiado 3
• Crie uma rota PATCH /alunos/<matricula>/media
• A rota deve atualizar apenas a média do aluno.
28/04/2026 Professor Paulo Nunes 25
Fechamento da aula
Nesta aula vimos:
• conexão Python + MongoDB;
• CRUD com PyMongo;
• criação de API REST;
• rotas GET, POST, PUT, PATCH e DELETE;
• testes com Postman;
• integração entre aplicação e banco NoSQL.
28/04/2026 Professor Paulo Nunes 26