
Introdução
Quando trabalhamos com Django, um dos frameworks Python mais populares para desenvolvimento web, o gerenciamento de banco de dados é parte crucial da construção de aplicações robustas e escaláveis. Os comandos makemigrations e migrate são ferramentas essenciais para manipular o banco de dados de forma organizada, permitindo criar e atualizar tabelas sem precisar lidar diretamente com SQL. Este artigo é um guia passo a passo sobre como e quando usar esses comandos para aplicar alterações no banco de dados de maneira eficiente.
Passo a Passo dos Comandos makemigrations e migrate:
1- Configurando o Ambiente
Antes de iniciarmos, certifique-se de que seu projeto Django está configurado e com um banco de dados conectado. O arquivo settings.py é onde configuramos o banco de dados. Vamos usar o exemplo com um banco SQLite:
# Python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
2- Criando ou Alterando um Model
Imagine que você queira criar um modelo para armazenar dados de produtos em uma aplicação de e-commerce. No arquivo models.py da sua app, adicione a classe do modelo:
# Python
from django.db import models
class Produto(models.Model):
nome = models.CharField(max_length=100)
preco = models.DecimalField(max_digits=10, decimal_places=2)
estoque = models.IntegerField()
def __str__(self):
return self.nome
3- Gerando uma Migração com makemigrations
Agora que temos um novo modelo, precisamos criar uma migração, que é um arquivo de controle de versão para as mudanças no banco de dados. No terminal, dentro da pasta do projeto, execute:
# Bash
python manage.py makemigrations
Esse comando cria um arquivo de migração na pasta migrations da sua app. Ele contém instruções para Django aplicar essas mudanças no banco de dados.
4- Verificando o Arquivo de Migração
Se desejar, você pode revisar o arquivo de migração gerado. Ele fica em nome_da_app/migrations/. Esse arquivo conterá algo como:
# Python
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name='Produto',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nome', models.CharField(max_length=100)),
('preco', models.DecimalField(decimal_places=2, max_digits=10)),
('estoque', models.IntegerField()),
],
),
]
5- Aplicando a Migração com migrate
Para atualizar o banco de dados com a estrutura criada, utilizamos o comando migrate:
# Bash
python manage.py migrate
Esse comando verifica as migrações pendentes e as aplica ao banco de dados, criando ou atualizando tabelas conforme necessário.
6- Modificando um Modelo Existente
Caso deseje adicionar um campo ao modelo Produto, por exemplo, uma descrição, basta atualizar o modelo e gerar uma nova migração.
# Python
class Produto(models.Model):
nome = models.CharField(max_length=100)
preco = models.DecimalField(max_digits=10, decimal_places=2)
estoque = models.IntegerField()
descricao = models.TextField(null=True, blank=True) # novo campo
def __str__(self):
return self.nome
Em seguida, execute makemigrations e migrate novamente para aplicar a mudança:
# Bash
python manage.py makemigrations
python manage.py migrate
Conclusão
Os comandos makemigrations e migrate são fundamentais para o desenvolvimento de aplicações Django, permitindo que possamos alterar a estrutura do banco de dados sem precisar manipular SQL diretamente. Com essas ferramentas, gerenciar o ciclo de vida do banco de dados torna-se mais seguro e prático. O uso eficiente desses comandos permite a criação de sistemas que acompanham a evolução da aplicação, mantendo a integridade dos dados e facilitando futuras implementações.
Felipe Angeli3 contribuições
@felipexangeli