Mediumsqlalchemy

Что такое SQLAlchemy?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

SQLAlchemy — Python ORM и SQL toolkit. Два режима: Core (SQL Expression Language, типобезопасный SQL builder) и ORM (high-level, объекты-модели). Modern (2.0+) стиль:

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session
from sqlalchemy import select, String

class Base(DeclarativeBase):
    pass

class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column(String(100))

# 2.0+ select style
stmt = select(User).where(User.name == 'Alice')
with Session(engine) as session:
    user = session.scalars(stmt).first()
  • AsyncSession для asyncio; relationship(), ForeignKey;
  • Eager loading: selectinload, joinedload (аналог select_related/prefetch_related);
  • Alembic — миграции;
  • Преимущества над Django ORM: explicit, гибкий, raw SQL когда нужно;
  • Альтернативы: Tortoise ORM (async), Peewee (лёгкий), SQLModel (SQLAlchemy + Pydantic).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.