Миграции — это не «просто применить SQL»

Alembic — стандарт де-факто для миграций в SQLAlchemy-проектах. Но даже с инструментом легко наделать ошибок.

Вот принципы, которые помогают держать миграции под контролем:

🗂 Одна миграция — одно логическое изменение • Не смешивайте создание таблицы, добавление индекса и заполнение справочника в одном файле • Если что-то пойдёт не так — проще откатить и исправить

🔁 Идемпотентность: миграция должна быть безопасной для повторного запуска • Используйте IF NOT EXISTS, ALTER TABLE ... ADD COLUMN IF NOT EXISTS • Для заполнения данных — проверяйте, не выполнено ли действие ранее

🧪 Тестирование миграций: • Запуск на тестовой БД с продакшен-подобными данными • Проверка, что откат (alembic downgrade) работает корректно • Интеграционные тесты, которые проверяют, что приложение работает после миграции

🚨 Продакшен-чеклист: • Бэкап перед применением • Применение в окне низкой нагрузки • Мониторинг блокировок и длительности выполнения • План отката на случай проблем

🎯 Практический совет: Для сложных изменений (например, переименование колонки с данными) используйте двухэтапный подход: 1) добавить новую колонку и начать писать в обе, 2) перенести данные, 3) удалить старую колонку в следующей миграции.

#Alembic #DatabaseMigrations #PostgreSQL #SQLAlchemy #Backend #DataEngineering #OpenToWork

Миграции — это не «просто применить SQL» | Сетка — социальная сеть от hh.ru