49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
# Политика миграций БД
|
|
|
|
---
|
|
|
|
## Инструмент: 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)
|