Similar presentations:
Django. Миграции. Урок 10
1.
УРОК №10Django
Миграции
2.
Ключевые темы• Миграции
• makemigrations и migrate
• squashmigrations и showmigrations
3.
МиграцияМиграция – процесс внесения изменений в структуру хранимой
информации в базе данных.
Следует рассматривать миграции как систему контроля версий
(GIT) для схемы базы данных. makemigrations отвечает за упаковку
изменений модели в отдельные файлы миграции - аналогично
коммитам - а migrate отвечает за их применение в базе данных.
Сбор файлов
миграций
Проведение
миграции
4.
Команды для миграций• makemigrations – создает новые миграции на основе изменений
в моделях.
• migrate – применяет все непримененные миграции к базе
данных.
• squashmigrations – объединяет несколько миграций в одну для
упрощения структуры миграций.
• showmigrations – отображает список миграций и их статус
(применены или не применены).
5.
makemigrationspy manage.py makemigrations
• <app_label1> <app_label2> <…> – указание приложений, для
которых производится миграция.
• --name/n
<migration_name>
–
позволяет
называть
сгенерированные
миграции
вместо
использования
сгенерированного имени. Имя должно быть допустимым
идентификатором Python.
• --dry-run – показывает, какие миграции будут выполнены без
фактической записи файлов миграции на диск.
6.
migratepy manage.py migrate
• <app_label1> <app_label2> <…> – указание приложений, для
которых производится миграция.
• <migration_name> – имя производимой миграции (обычно
используется в паре с указанием приложения)
• --plan – выводит план миграций список, перечисляющий
миграции порядке их выполнения.
7.
migratepy manage.py migrate
• --fake – помечает миграции как выполненные, но не вносит
никаких изменений в базу данных.
• --fake-initial – помечает инициальные миграции, которые
создают таблицы, как выполненные без фактического создания
таблиц. Полезно в случае, когда БД уже содержит схему таблиц.
8.
squashmigrationsКоманда squashmigrations используется для слияния нескольких
миграций в одну, создавая так называемую "слияние-миграцию".
Это позволяет уменьшить количество миграций в проекте и
упростить управление изменениями базы данных.
При запуске команды squashmigrations Django анализирует
историю миграций для указанного приложения и предлагает
выбрать несколько миграций для слияния.
9.
squashmigrationspy manage.py squashmigrations <app_label> <last_migration_name>
• <app_label> – указание приложения, для которого производится
объединение миграций. Обязательный параметр.
• <last_migration_name> – имя последней миграции, до которой
будет производится слияние всех идущих до неё миграций.
Обязательный параметр.
• <start_migration_name> – имя миграции, с которой в списке
начинается слияние, которое окончится на указанной в
параметре last_migration_name миграции.
10.
squashmigrationspy manage.py squashmigrations <app_label> <last_migration_name>
• [--squashed-name <SQUASHED_NAME>] – имя для миграции.
• --no-optimize – отменяет оптимизацию кода для уменьшения его
объема и повышения быстродействия. Рекомендуется указывать,
если слияние миграций выполнить не удалось или если
результирующая миграция оказалась неработоспособной;
• --noinput или --no-input – отключает меню ввода данных в
консоль в случае ошибки/уточнения.
11.
showmigraionsКоманда showmigrations используется для отображения списка
миграций, примененных или не применённых к базе данных.
Если не указать псевдоним приложения, будут выведены все
имеющиеся в проекте миграции с разбиением по приложениям.
Если указать псевдоним приложения, то будут выведены только
миграции из этого приложения. При задании списка псевдонимов
приложений, разделенных пробелами, ВЫВОДЯТСЯ ТОЛЬКО
миграции ИЗ ЭТИХ приложений , опять же, с разбиением по
отдельным приложениям.
12.
Откат миграцийБывают случаи, особенно в процессе разработки приложения,
когда необходимо отменить последнюю или все миграции.
Для отката миграции до определённого момента используется
синтаксис:
py manage.py migrate <app_label> <migration_name>
13.
Отмена всех миграцийDjango позволяет отменить все миграции в приложении, тем
самым удалив все созданные ими в базе данных структуры.
Для этого достаточно выполнить команду migrate утилиты
manage.py, указав в ней имя нужного приложения и zero в качестве
имени миграции:
py manage.py migrate <app_label> zero
Отменить отдельную,
невозможно.
произвольно
выбранную
миграцию