Команда sqlmigrate

Команда sqlmigrate предназначена для просмотра SQL-кода, который будет выполнен при применении конкретной миграции. Она принимает два обязательных аргумента: имя приложения и имя миграции. Это полезно для проверки того, какие именно изменения в базе данных будут произведены, особенно при использовании сложных операций, таких как добавление полей с внешними ключами или изменение типов данных. Команда не вносит изменений в базу данных, а только выводит сгенерированный SQL.

Синтаксис

pythonpython manage.py sqlmigrate app_label migration_name

Где:

Также можно использовать опцию --backwards, которая показывает SQL для отката миграции.

Пример

Предположим, у нас есть приложение blog с миграцией 0001_initial, которая создаёт модель Article. Чтобы посмотреть SQL этой миграции, выполните команду:

pythonpython manage.py sqlmigrate blog 0001_initial

Результат выполнения команды (пример для SQLite):

pythonBEGIN;
--
-- Create model Article
--
CREATE TABLE "blog_article" (
  "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
  "title" varchar(200) NOT NULL,
  "content" text NOT NULL,
  "created_at" datetime NOT NULL
);
COMMIT;

Пример

Для просмотра SQL-кода, который будет выполнен при откате миграции, используйте флаг --backwards:

pythonpython manage.py sqlmigrate blog 0001_initial --backwards

Результат выполнения команды:

pythonBEGIN;
--
-- Reverse migration for Create model Article
--
DROP TABLE "blog_article";
COMMIT;

Пример

Команда также полезна для проверки изменений в уже существующих таблицах. Например, если мы добавили поле status в модель Article и создали миграцию 0002_add_status, то можно посмотреть SQL:

pythonpython manage.py sqlmigrate blog 0002_add_status

Результат выполнения команды (пример для PostgreSQL):

pythonBEGIN;
--
-- Add field status to article
--
ALTER TABLE "blog_article" ADD COLUMN "status" varchar(20) NOT NULL DEFAULT 'draft';
COMMIT;

Смотрите также

  • команда migrate,
    которая применяет миграции к базе данных
  • команда makemigrations,
    которая создаёт новые файлы миграций на основе изменений моделей
  • команда showmigrations,
    которая отображает список всех миграций и их статус
  • команда squashmigrations,
    которая объединяет несколько миграций в одну