Gerenciar o banco de dados

Concluído

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.