Skip to content

Instantly share code, notes, and snippets.

@muhammad-1736
Created April 14, 2026 15:08
Show Gist options
  • Select an option

  • Save muhammad-1736/b3607da67e208868d4f2acde3fb5eb4d to your computer and use it in GitHub Desktop.

Select an option

Save muhammad-1736/b3607da67e208868d4f2acde3fb5eb4d to your computer and use it in GitHub Desktop.
python_cheatsheet

3. Как Alembic работает по шагам

Шаг 1. Ты инициализируешь Alembic

alembic init alembic

Создаётся:

alembic/
  env.py      ← главный файл
  versions/   ← миграции
alembic.ini

Шаг 2. Связываешь Alembic с моделями

В env.py:

from myapp.models import Base

target_metadata = Base.metadata

👉 Это КЛЮЧЕВОЙ момент

Alembic теперь “видит” твою схему


Шаг 3. Генерация миграции

alembic revision --autogenerate -m "create users"

Что происходит внутри:

Alembic делает diff:

  1. Берёт:

    • текущую БД (через connection)
    • твою Base.metadata
  2. Сравнивает:

    DB schema  vs  SQLAlchemy metadata
    
  3. Генерирует код:

def upgrade():
    op.create_table("users", ...)

Шаг 4. Применение миграции

alembic upgrade head

👉 Alembic:

  • читает последний revision
  • выполняет upgrade()

4. Где хранится состояние?

В БД создаётся таблица:

alembic_version

Там хранится:

version_num = "ae1027a6acf"

👉 Это текущая версия схемы


5. CLI команды (что реально используешь)

Основные:

alembic revision --autogenerate -m "msg"

→ создать миграцию

alembic upgrade head

→ применить всё

alembic downgrade -1

→ откатить на 1 шаг

alembic current

→ текущая версия

alembic history

→ список миграций


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment