aulify
UC UC02831 · T. Desenv. Software, T. Inform. Gestão
Ficha 02 · ORM SQLAlchemy
Modelos, queries, relations, migrações
Versão · Aluno
Tempo · 60 minutos
Cotação · 100 pontos
Aluno(a)
Turma
Nº
Data
Objectivos da ficha
- Definir modelos
- Fazer CRUD
- Resolver N+1
- Aplicar migrações
Parte I · Modelos
Exercício 1 · Definir modelos (20 pts)
Define modelos SQLAlchemy para uma escola: Aluno, Disciplina, Inscricao (N:M com nota):
Exercício 2 · CRUD (15 pts)
Escreve código para:
a) Criar 2 alunos. b) Criar 1 disciplina. c) Inscrever ambos os alunos na disciplina. d) Listar todas as inscrições com nome do aluno + disciplina.
Parte II · Queries
Exercício 3 · Filtros (15 pts)
Para os modelos do exercício 1, escreve queries SQLAlchemy para:
a) Alunos cujo nome começa por "A".
b) Disciplinas com pelo menos 1 inscrição em 2026/2027.
c) Top 5 alunos com mais inscrições.
Exercício 4 · N+1 problem (20 pts)
a) Identifica o problema neste código:
alunos = session.query(Aluno).all()
for a in alunos:
print(a.nome, len(a.inscricoes))
b) Reescreve para evitar o problema.
c) Quantas queries de BD em cada versão (assumindo 100 alunos)?
Parte III · Migrações
Exercício 5 · Alembic workflow (10 pts)
Descreve passo-a-passo como adicionar coluna telefone à tabela Aluno usando Alembic:
Parte IV · Cenário
Exercício 6 · Repository com SQLAlchemy (20 pts)
Reescreve o ClienteRepository da ficha anterior, mas agora usando SQLAlchemy ORM.