📝 Fastapi

Alembic: миграции БД

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
347
🌳
Уровень
Продвинутый

Alembic — инструмент для управления миграциями SQLAlchemy/SQLModel.

Установка

pip install alembic

Инициализация

alembic init alembic

Создаёт:

alembic/
├── env.py
├── script.py.mako
└── versions/
alembic.ini

Настройка alembic.ini

sqlalchemy.url = postgresql://user:pass@localhost/mydb
# Или через переменную окружения — лучше настроить в env.py

Настройка env.py

# alembic/env.py
from sqlmodel import SQLModel
from myapp.models import *  # импорт всех моделей
from myapp.database import DATABASE_URL

config.set_main_option("sqlalchemy.url", DATABASE_URL)

target_metadata = SQLModel.metadata

Создание миграции

# Автоматически из изменений в моделях
alembic revision --autogenerate -m "add task table"

# Пустая миграция (писать вручную)
alembic revision -m "custom migration"

Применение миграций

alembic upgrade head          # применить все
alembic upgrade +1            # следующая миграция
alembic downgrade -1          # откат на одну
alembic downgrade base        # откат до начала

Пример файла миграции

# alembic/versions/0001_add_task_table.py
from alembic import op
import sqlalchemy as sa

def upgrade():
    op.create_table(
        'task',
        sa.Column('id', sa.Integer, primary_key=True),
        sa.Column('title', sa.String(200), nullable=False),
        sa.Column('status', sa.String(20), default='todo'),
        sa.Column('created_at', sa.DateTime),
    )

def downgrade():
    op.drop_table('task')

Статус миграций

alembic current               # текущая версия
alembic history               # история
alembic history --verbose     # подробно

В Docker/CI

# Применить перед стартом приложения
alembic upgrade head && uvicorn main:app --host 0.0.0.0 --port 8000

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

FastAPI: основы

FastAPI — современный Python фреймворк для создания API. Автоматическая документация, типизация, высокая производительность.

📅 30.06.2026 👁️ 303
📝

SQLModel: основы

SQLModel — библиотека для работы с БД в FastAPI, объединяющая SQLAlchemy и Pydantic.

📅 30.06.2026 👁️ 329
📝

Middleware и CORS в FastAPI

Middleware обрабатывает запросы и ответы вокруг маршрутов FastAPI, а CORS определяет, какие браузерные источники могут...

📅 30.06.2026 👁️ 331

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!