Какие основные команды Django используются для управления миграциями базы данных?

Ответ

Для управления схемой базы данных через систему миграций в Django используются следующие ключевые команды manage.py.

Создание и применение миграций

  • python manage.py makemigrations [app_label] Анализирует изменения в ваших моделях (models.py) и создает новые файлы миграций в директории migrations/ соответствующего приложения. Эти файлы содержат Python-код, описывающий изменения схемы.

  • python manage.py migrate [app_label] [migration_name] Применяет все непримененные миграции к базе данных, синхронизируя её состояние с моделями. Без аргументов применяет миграции для всех приложений.

Инспекция и отладка

  • python manage.py showmigrations Показывает список всех миграций во всех приложениях проекта и их статус: [X] для примененных и [ ] для непримененных.

  • python manage.py sqlmigrate <app_label> <migration_name> Выводит на экран SQL-код, который будет выполнен для указанной миграции. Очень полезно для отладки и понимания того, что именно Django собирается сделать с базой данных.

Продвинутое управление и откат

  • python manage.py migrate <app_label> <migration_name> Позволяет откатить миграции. Чтобы откатить все миграции в приложении myapp до миграции 0002_..., нужно применить предыдущую миграцию:

    python manage.py migrate myapp 0001

    Для полного отката всех миграций приложения используется ключевое слово zero:

    python manage.py migrate myapp zero
  • python manage.py migrate --fake Отмечает все непримененные миграции как примененные, но не выполняет соответствующий SQL-код. Используется в редких случаях, когда схема базы данных уже находится в нужном состоянии вручную, и нужно лишь синхронизировать с ней таблицу миграций Django.

Типичный рабочий процесс

# 1. После внесения изменений в models.py создаем файл миграции
python manage.py makemigrations

# 2. Применяем сгенерированную миграцию к базе данных
python manage.py migrate