# Политика миграций БД --- ## Инструмент: Alembic Миграции управляются через Alembic. ```bash # Создать миграцию alembic revision --autogenerate -m "add_users_table" # Применить alembic upgrade head # Откатить alembic downgrade -1 ``` --- ## Правила 1. **Одна миграция на одно изменение.** Не смешивать разные изменения в одной миграции. 2. **Обратная совместимость.** Миграция должна иметь downgrade. 3. **Тестирование.** Каждая миграция тестируется (upgrade + downgrade). 4. **Именование:** `{revision}_{action}_{table}.py` - `a1b2c3d4e5f6_add_content_to_ideas.py` --- ## Названия миграций ``` create_{table} add_{column}_to_{table} remove_{column}_from_{table} add_index_on_{table}_{column} add_fk_{table}_{column} ``` --- ## [ASK] Вопросы по миграциям - Автоматические миграции на production? (не рекомендуется — только через CI после проверки) - Data migration (перенос данных) vs schema migration? (data migration = отдельный скрипт) - Как бекапить БД перед миграцией? (pg_dump / sqlite3 .backup)