Gerenciar o banco de dados
O ORM do Django vai além de apenas permitir que você interaja com os dados. Você também pode usá-lo para criar e atualizar o banco de dados por meio de um processo conhecido como migrações.
Migrações
Uma migração é uma coleção de atualizações a serem executadas no esquema de um banco de dados. Um esquema de banco de dados é a definição do próprio banco de dados, incluindo todas as tabelas e colunas, bem como as relações entre essas tabelas.
Quando criamos nossos modelos e definimos os campos, também definimos as tabelas, as colunas e as relações entre essas tabelas. Criamos a definição de esquema criando os modelos.
As migrações são usadas para criar e atualizar o banco de dados conforme os modelos são alterados. Como você provavelmente já sabe, o software está constantemente mudando. A maneira como definimos os modelos hoje pode ser diferente de como os definiremos amanhã. As migrações eliminam o processo de atualização do banco de dados por nossa parte. Em seguida, podemos fazer alterações nos modelos e usar o Django para executar as alterações necessárias no banco de dados.
Fazer uma migração
Para criar uma migração, use o comando makemigrations
em manage.py. O comando makemigrations
usa a lista atual de migrações para obter um ponto de partida e usa o estado atual dos modelos para determinar o delta (as alterações que precisam ser feitas). Em seguida, ele gera o código necessário para atualizar o banco de dados. Após a execução de makemigrations
, ele exibe o nome da migração.
python manage.py makemigrations
Exibir o SQL para a migração
Todas as operações que acontecem dentro de um banco de dados relacional exigem a linguagem SQL. As migrações do Django geram o SQL apropriado quando são executadas. Embora você possa usar as ferramentas de migração para atualizar seu banco de dados diretamente, alguns ambientes podem ter administradores de banco de dados que gerenciarão o processo para você.
Para criar as instruções SQL apropriadas, você pode usar sqlmigrate
.
python manage.py sqlmigrate <app_label> <migration_name>
Observação
A parte app_label
é o nome do seu aplicativo, normalmente, o nome da pasta que o contém. A parte migration_name
é o nome da migração. Você também pode ver o código Python para obter as migrações de qualquer aplicativo na pasta migrations.
Exibir a lista de migrações
Se você quiser ver todas as migrações, use showmigrations
.
python manage.py showmigrations
Fazer uma migração
O comando migrate
executa uma migração específica ou todas as migrações no banco de dados configurado em settings.py na raiz da pasta do projeto.
Se você abrir settings.py, verá uma seção DATABASES
na parte inferior. Esta seção inclui uma opção default
, que em um novo projeto é configurada para usar o SQLite. Você pode configurar diferentes cadeias de conexão de banco de dados nesta seção, conforme necessário.
python manage.py migrate <app_label> <migration_name>
Observação
As partes app_label
e migration_name
são opcionais. Se você não fornecer nenhuma das duas, todas as migrações serão executadas. Você usará esse comando com frequência durante o desenvolvimento.