🚀 Capítulo 16: Projetando o Banco de Dados
NOTE
Este capítulo utiliza a temática de O Arquiteto (criador da Matrix) para explicar as Migrations em Python usando o Alembic. Aprenda a versionar o seu banco de dados!
🎯 Objetivo da Aula
Compreender o conceito de Migrations no ecossistema Python, conhecendo a ferramenta Alembic para criar e alterar tabelas no banco de dados usando código Python.
🏢 O Cenário Prático (Seu Desafio)
O Arquiteto é o programa responsável por projetar a estrutura de toda a Matrix. Ele decide onde ficam os prédios, as ruas e como as pessoas são cadastradas no sistema. Se ele precisar adicionar uma nova cidade ou mudar a cor do céu, ele não reconstrói tudo do zero; ele aplica uma atualização na estrutura existente!
No desenvolvimento em equipe, mexer no banco de dados costuma ser um problema. Se você adicionar uma coluna nova na tabela do seu computador, como os outros programadores da equipe vão saber disso?
- O Python resolve isso com as Migrations (geralmente usando a biblioteca Alembic). Elas são arquivos de código que dizem exatamente como criar ou alterar as tabelas. Quando você manda rodar as migrations, o Alembic cria tudo no banco sozinho! Seu desafio é projetar essa estrutura!
🧠 Fundamentos: A Teoria Traduzida
🗺️ 1. O que é o Alembic?
É a ferramenta mais famosa do Python para gerenciar migrations de banco de dados, muito usada junto com o SQLAlchemy (que veremos no próximo capítulo).
⌨️ 2. Criando o Ambiente:
No terminal, você inicia o Alembic no seu projeto com o comando:
alembic init alembicIsso cria uma pasta chamada alembic com as configurações.
🏗️ 3. Gerando uma Migration:
Para criar um arquivo que descreve a criação de uma tabela, você digita:
alembic revision -m "create_users_table"Isso gera um arquivo Python com duas funções:
upgrade(): O que fazer para aplicar a mudança (ex: criar tabela).downgrade(): O que fazer para desfazer a mudança (ex: apagar tabela).
📖 Exemplo Guiado: Rodando as Migrations
Depois de escrever o código da sua migration (ou deixar o Alembic gerar automaticamente), para que ele realmente acesse o seu banco de dados e crie as tabelas físicas lá dentro, você digita no terminal:
alembic upgrade headO Alembic lerá todas as atualizações e deixará o seu banco de dados na versão mais recente (head)!
🛠️ Prática Obrigatória 1: O Comando de Criação
- Qual é o comando do terminal que usamos para criar um novo arquivo de migration no Alembic com uma mensagem descritiva?
🛠️ Prática Obrigatória 2: O Comando de Execução
- Qual é o comando do terminal que lê as migrations e aplica as alterações no banco de dados físico?
📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
Neste curso, você entregará suas atividades enviando o código para o seu repositório no GitHub usando o aplicativo GitHub Desktop. Siga o passo a passo detalhado:
- Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
- Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
- Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
- Faça o Commit:
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
Finaliza atividades do Capítulo. - Clique no botão azul Commit to main (ou o nome da sua branch).
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
- Envie para a Nuvem (Push): No topo da tela, clique no botão Push origin. Isso enviará seu código do seu computador para o seu perfil no GitHub.
- ⚠️ IMPORTANTE (Repositório Público): Para que o professor consiga corrigir, o seu repositório no GitHub DEVE SER PÚBLICO. Repositórios privados não podem ser visualizados por quem não foi convidado.
- Como entregar no Microsoft Teams:
- Copie o link do seu repositório no GitHub (ex:
https://github.com/seu-usuario/seu-repositorio). - Abra a tarefa correspondente no Microsoft Teams.
- Clique no botão Adicionar trabalho (ou Add work).
- Selecione a opção Link no menu lateral.
- Cole o link do GitHub no campo “Endereço Web” e digite um texto (ex:
Meu Repositório) no campo “Texto a ser exibido”. - Clique em Anexar.
- MUITO IMPORTANTE: Clique no botão Entregar (ou Turn in) no canto superior direito para concluir o envio!
- Copie o link do seu repositório no GitHub (ex:
📂 Estrutura de Pastas
spec_backend_com_python_e_fastapi/
├── capitulos/
│ └── capitulo_16_arquiteto.md💡 Checkpoint de Lógica
As migrations permitem que você “volte no tempo”! Se você fez uma alteração no banco e deu errado, você pode digitar alembic downgrade -1 e o Alembic desfaz a última alteração executando a função downgrade()!
🔥 Desafio de Fixação (Opcional)
Pesquise como o Alembic consegue gerar o código das migrations automaticamente olhando para os seus modelos do SQLAlchemy (Dica: procure por --autogenerate).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Usamos o comando:
alembic revision -m "mensagem". Gabarito da Prática 2: - Usamos o comando:
alembic upgrade head.