Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 626новых вакансий за сутки·54 602вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 579
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 395 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 901
  • Облачные технологии6 631
  • QA вакансии2 183
  • Android1 324
  • Инженер данных860
  • Продакт-менеджер316

Разработка

  • iOS1 240
  • Backend вакансии1 212
  • AI вакансии553
  • Fullstack вакансии503
  • Frontend вакансии428
  • Mobile вакансии28

По стеку

  • Go5 300
  • Java3 171
  • Kotlin1 128
  • Node.js1 016
  • Rust862
  • .NET676
  • PHP321
  • C++273
  • C#208

DevOps и инфраструктура

  • Kubernetes3 882
  • Linux-инфраструктура2 817
  • DevOps вакансии2 705
  • Terraform / IaC2 191
  • Мониторинг и Observability1 071
  • CI/CD920
  • SRE308
  • Кибербезопасность38

Аналитика и данные

  • Аналитик данных522
  • Data Scientist435
  • Бизнес-аналитик397
  • Системный аналитик67

Другие направления

  • Проджект-менеджер109
  • UI/UX дизайн67
  • Ручное тестирование14

По регионам

  • Вакансии в США25 642
  • Вакансии в Европе10 259
  • Работа в России3 639
  • Вакансии в Канаде2 255

По формату

  • Удалённые вакансии42 339
  • Релокация в США25 642
  • Гибридная работа5 706
  • Офисная работа4 402

По уровню

  • Senior вакансии22 510
  • Middle вакансии11 429
  • Junior вакансии3 877

Сейчас нанимают

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме SQLAlchemyВсе вопросы
SQLAlchemyJuniorТеория

Что такое SQLAlchemy и каковы его два основных компонента (Core vs ORM)?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

SQLAlchemy состоит из Core (SQL Expression Language, Engine, пул соединений) и ORM (Data Mapper, Unit of Work, управление объектами). Core ближе к SQL, ORM — к бизнес-объектам.

SQLAlchemy Core

Нижний слой: абстракция над DBAPI (PEP 249). Предоставляет:

  • Engine и Connection — управление пулом соединений и транзакциями.
  • Table / Column / MetaData — описание схемы в Python без ORM-классов.
  • SQL Expression Language — конструктор SQL-запросов, который генерирует диалект-специфичный SQL.
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, select

engine = create_engine("postgresql+psycopg://user:pass@localhost/db")
meta = MetaData()

users = Table(
    "users", meta,
    Column("id", Integer, primary_key=True),
    Column("name", String(100)),
)

# Запрос через Core (без ORM-классов):
with engine.connect() as conn:
    stmt = select(users).where(users.c.name == "Alice")
    rows = conn.execute(stmt).fetchall()
    print(rows)  # [(1, 'Alice')]

Что такое SQLAlchemy

SQLAlchemy — библиотека для работы с реляционными БД на Python, де-факто стандарт в экосистеме. Состоит из двух слоёв, которые можно использовать независимо.

SQLAlchemy ORM

Верхний слой: реализует паттерны Data Mapper и Unit of Work. Маппит Python-классы на таблицы, управляет identity map и отслеживает изменения объектов.

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

class Base(DeclarativeBase):
    pass

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

# Создание таблицы:
Base.metadata.create_all(engine)

# CRUD через ORM:
with Session(engine) as session:
    session.add(User(name="Alice"))
    session.commit()

    user = session.get(User, 1)
    print(user.name)  # Alice

Когда что использовать

  • Core — bulk insert/update, сложные аналитические запросы (window functions, CTE), миграции (Alembic использует Core), работа с raw SQL через text().
  • ORM — CRUD-сервисы, бизнес-логика с объектной моделью, связи (relationships), валидация на уровне Python.
  • Оба слоя можно смешивать: ORM-запрос можно выполнить через session.execute(select(User)), а внутри получить Row-объекты Core.

Подводные камни

  • ORM скрывает количество SQL-запросов: N+1 при lazy loading — самая частая проблема в production.
  • Core-запросы не участвуют в identity map: изменение объекта через conn.execute(update(...)) не обновит уже загруженный ORM-объект в сессии.
  • В SQLAlchemy 2.0 session.execute(select(User)) возвращает Result, а не список — нужен явный .scalars().all() или .all().
  • create_engine() принимает строку подключения с диалектом: postgresql+psycopg:// для psycopg3, postgresql+asyncpg:// для async. Путаница с драйвером даёт невнятные ошибки.
  • MetaData нужно передавать явно или использовать Base.metadata — иначе create_all() не найдёт таблицы.
  • ORM не заменяет понимание SQL: неправильно написанный relationship() с lazy="select" в цикле даёт сотни запросов незаметно.

Частые вопросы на собеседовании

  • Как решить проблему N+1 запросов в SQLAlchemy с помощью selectinload или joinedload?
  • Как работает Session в SQLAlchemy и что такое паттерн Unit of Work?
  • Как делать zero-downtime миграции с Alembic и SQLAlchemy models?
  • Что такое Engine в SQLAlchemy и как работает пул соединений?

Типичные ошибки

  • Описывать core vs orm только как термин и не показывать механизм на минимальном примере.
  • Игнорировать ошибки, пустые данные, конкурентный доступ или границы транзакции.
  • Не связывать поведение с официальным контрактом SQLAlchemy и реальной эксплуатацией.

Что проверяет интервьюер

  • Объясняет core vs orm через последовательность действий, а не через набор ключевых слов.
  • Приводит короткий кодовый пример или production-сценарий с ожидаемым поведением.
  • Называет хотя бы один риск: производительность, безопасность, транзакции, память или сопровождение.

Как вы знаете этот вопрос?

Проверить себя по теме SQLAlchemy →

Источники

  • https://docs.sqlalchemy.org/en/20/tutorial/index.html
←Предыдущий вопросКак сравнить SQLAlchemy с raw SQL, query builder и другими ORM по контролю, типобезопасности и производительности?Следующий вопрос→Когда SQLAlchemy ускоряет разработку, а когда ORM-абстракция начинает мешать понимать базу данных?

Связанные темы

SQLAlchemydatabase-designtechnical-reasoning

Вакансии с этим навыком

  • Python developer