Миграции — это способ управления изменениями в структуре базы данных (схеме) с течением времени. Они позволяют применять (upgrade) или откатывать (downgrade) изменения в БД, сохраняя историю модификаций и обеспечивая согласованность между разными окружениями (разработка, тестирование, продакшен).
Alembic — это легковесная библиотека для миграций баз данных, созданная автором SQLAlchemy (Майклом Байером). Она предоставляет инструменты для:
migrations/versions
).env.py
).# migrations/versions/1234_add_user_table.py
from alembic import op
import sqlalchemy as sa
def upgrade():
# Создаем новую таблицу
op.create_table(
'users',
sa.Column('id', sa.Integer, primary_key=True),
sa.Column('name', sa.String(50), nullable=False),
sa.Column('email', sa.String(100), unique=True)
)
# Добавляем индекс
op.create_index('ix_users_email', 'users', ['email'])
def downgrade():
# Откатываем изменения
op.drop_index('ix_users_email', 'users')
op.drop_table('users')
Инициализация:
alembic init migrations
Создание новой миграции:
alembic revision -m "add user table"
Применение миграций:
alembic upgrade head
Откат миграции:
alembic downgrade -1
Alembic часто используют вместе с SQLAlchemy ORM. Можно автоматически генерировать миграции на основе моделей:
alembic revision --autogenerate -m "description"
Alembic — мощный инструмент для управления изменениями структуры БД в Python-проектах. Он интегрируется с SQLAlchemy, поддерживает транзакции и предоставляет удобный CLI. Правильное использование миграций значительно упрощает работу с БД в командной разработке и при деплое приложений.