758.51K
Category: geographygeography

Django. Миграции. Урок 10

1.

УРОК №10
Django
Миграции

2.

Ключевые темы
• Миграции
• makemigrations и migrate
• squashmigrations и showmigrations

3.

Миграция
Миграция – процесс внесения изменений в структуру хранимой
информации в базе данных.
Следует рассматривать миграции как систему контроля версий
(GIT) для схемы базы данных. makemigrations отвечает за упаковку
изменений модели в отдельные файлы миграции - аналогично
коммитам - а migrate отвечает за их применение в базе данных.
Сбор файлов
миграций
Проведение
миграции

4.

Команды для миграций
• makemigrations – создает новые миграции на основе изменений
в моделях.
• migrate – применяет все непримененные миграции к базе
данных.
• squashmigrations – объединяет несколько миграций в одну для
упрощения структуры миграций.
• showmigrations – отображает список миграций и их статус
(применены или не применены).

5.

makemigrations
py manage.py makemigrations
• <app_label1> <app_label2> <…> – указание приложений, для
которых производится миграция.
• --name/n
<migration_name>

позволяет
называть
сгенерированные
миграции
вместо
использования
сгенерированного имени. Имя должно быть допустимым
идентификатором Python.
• --dry-run – показывает, какие миграции будут выполнены без
фактической записи файлов миграции на диск.

6.

migrate
py manage.py migrate
• <app_label1> <app_label2> <…> – указание приложений, для
которых производится миграция.
• <migration_name> – имя производимой миграции (обычно
используется в паре с указанием приложения)
• --plan – выводит план миграций список, перечисляющий
миграции порядке их выполнения.

7.

migrate
py manage.py migrate
• --fake – помечает миграции как выполненные, но не вносит
никаких изменений в базу данных.
• --fake-initial – помечает инициальные миграции, которые
создают таблицы, как выполненные без фактического создания
таблиц. Полезно в случае, когда БД уже содержит схему таблиц.

8.

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

9.

squashmigrations
py manage.py squashmigrations <app_label> <last_migration_name>
• <app_label> – указание приложения, для которого производится
объединение миграций. Обязательный параметр.
• <last_migration_name> – имя последней миграции, до которой
будет производится слияние всех идущих до неё миграций.
Обязательный параметр.
• <start_migration_name> – имя миграции, с которой в списке
начинается слияние, которое окончится на указанной в
параметре last_migration_name миграции.

10.

squashmigrations
py 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
Отменить отдельную,
невозможно.
произвольно
выбранную
миграцию

14.

Конец
English     Русский Rules