Для приложений, основанных на ORM, таких как Django или SQLAlchemy с Alembic, процесс включает генерацию файла миграции на основе изменений в моделях и применение этого файла к базе данных.
Для Django:
Сгенерировать файл миграции на основе изменений в моделях:
bash
// Создает новый файл в директории migrations вашего приложения.
// Если вы хотите применить миграцию к определенному приложению, укажите его имя:
// python manage.py makemigrations <app_name>
Применить миграцию к базе данных:
bash
// Применяет ожидающие миграции ко всей базе данных. // Чтобы применить миграцию только к определенному приложению: // python manage.py migrate <app_name> // Чтобы применить конкретную миграцию: // python manage.py migrate <app_name> <migration_name>
Для SQLAlchemy с Alembic:
Установить Alembic (если еще не установлен):
bash
Инициализировать Alembic в корне проекта:
bash
// Создаст директивы и файл alembic.ini.
Настроить Alembic, указав URL базы данных и путь к моделям в alembic/env.py.
Сгенерировать файл миграции (ревизию):
bash
// Создаст новый файл миграции в директории alembic/versions.
// Alembic пытается автоматически определить изменения в моделях,
// но иногда может потребоваться ручная корректировка файла миграции.
Применить миграцию к базе данных:
bash
// Применяет все ожидающие миграции. // Чтобы применить конкретную миграцию: // alembic upgrade <revision_id> // Чтобы даунгрейднуть (откатить) миграцию: // alembic downgrade <revision_id>
Сравнение:
| Особенность | Django Migrations | Alembic (SQLAlchemy) |
|---|---|---|
| Интеграция | Встроенная в Django | Отдельная библиотека для SQLAlchemy |
| Генерация миграций | Автоматическая на основе моделей | Автоматическая (с возможностью ручной правки) |
| Управление | Команда manage.py | Команда alembic |
| Сложность | Проще для начала | Более гибкий, требует настройки |
В обоих случаях рекомендуется просмотреть сгенерированный файл миграции перед его применением, чтобы убедиться, что он соответствует вашим ожиданиям.