Partilhar: WhatsApp
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
Data
Objectivos da ficha

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.