Команда sqlmigrate
Команда sqlmigrate предназначена для просмотра SQL-кода,
который будет выполнен при применении конкретной миграции.
Она принимает два обязательных аргумента: имя приложения и
имя миграции. Это полезно для проверки того, какие именно
изменения в базе данных будут произведены, особенно при
использовании сложных операций, таких как добавление
полей с внешними ключами или изменение типов данных.
Команда не вносит изменений в базу данных, а только выводит
сгенерированный SQL.
Синтаксис
python manage.py sqlmigrate app_label migration_name
Где:
-
app_label- имя приложения, для которого просматривается миграция; -
migration_name- имя файла миграции (например, 0001_initial или 0002_add_field);
Также можно использовать опцию --backwards,
которая показывает SQL для отката миграции.
Пример
Предположим, у нас есть приложение blog с миграцией
0001_initial, которая создаёт модель Article.
Чтобы посмотреть SQL этой миграции, выполните команду:
python manage.py sqlmigrate blog 0001_initial
Результат выполнения команды (пример для SQLite):
BEGIN;
--
-- 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:
python manage.py sqlmigrate blog 0001_initial --backwards
Результат выполнения команды:
BEGIN;
--
-- Reverse migration for Create model Article
--
DROP TABLE "blog_article";
COMMIT;
Пример
Команда также полезна для проверки изменений в уже
существующих таблицах. Например, если мы добавили поле
status в модель Article и создали миграцию
0002_add_status, то можно посмотреть SQL:
python manage.py sqlmigrate blog 0002_add_status
Результат выполнения команды (пример для PostgreSQL):
BEGIN;
--
-- Add field status to article
--
ALTER TABLE "blog_article" ADD COLUMN "status" varchar(20) NOT NULL DEFAULT 'draft';
COMMIT;
Смотрите также
-
команда
migrate,
которая применяет миграции к базе данных -
команда
makemigrations,
которая создаёт новые файлы миграций на основе изменений моделей -
команда
showmigrations,
которая отображает список всех миграций и их статус -
команда
squashmigrations,
которая объединяет несколько миграций в одну