Чему вы научитесь
- Создавать и настраивать Engine, Session и AsyncSession в SQLAlchemy 2.0
- Описывать таблицы и ORM-модели с помощью современного типизированного синтаксиса Mapped и mapped_column
- Выполнять CRUD-операции через SQLAlchemy Core и ORM
- Строить запросы с фильтрацией, сортировкой, пагинацией, агрегатами и JOIN
- Проектировать связи one-to-many, one-to-one и many-to-many
- Настраивать каскады, удаление зависимых объектов и ограничения внешних ключей
- Выбирать стратегии загрузки связей и устранять проблему N+1
- Создавать и применять миграции базы данных с помощью Alembic
- Управлять транзакциями, flush, commit, rollback и состояниями ORM-объектов
- Выполнять асинхронные запросы с create_async_engine и AsyncSession
- Обрабатывать IntegrityError и правильно организовывать жизненный цикл Session
- Защищать текстовые SQL-запросы от инъекций с помощью bind-параметров
- Просматривать сгенерированный SQL и проводить базовый анализ запросов через EXPLAIN
- Тестировать код, работающий с базой данных, с помощью pytest, фикстур и rollback
О курсе
SQLAlchemy — один из основных инструментов для работы с реляционными базами данных в Python. Он позволяет писать запросы как на уровне SQL-выражений, так и через объектно-реляционную модель, но уверенное использование библиотеки требует понимания не только синтаксиса, но и того, что происходит внутри Session, транзакций и связей между моделями.
Курс построен на актуальном стиле SQLAlchemy 2.0. Обучение начинается с настройки подключения и работы через Core, после чего постепенно переходит к ORM-моделям, запросам, отношениям, миграциям, каскадам, стратегиям загрузки и асинхронной работе.
В качестве общей предметной области используется система управления проектами: пользователи, профили, проекты, задачи и теги. Благодаря этому отдельные темы складываются в единую и понятную модель приложения.
Особое внимание уделяется практическим вопросам: предотвращению N+1, корректному управлению транзакциями, обработке IntegrityError, безопасной работе с text(), конфигурации через переменные окружения и изолированному тестированию кода с базой данных.
После прохождения курса вы будете понимать не только как написать запрос, но и как организовать надёжный слой доступа к данным в реальном Python-приложении.
Для кого этот курс
Начальные требования
Базовое знание Python: функции, классы, типы данных, условия и циклы
Понимание основ объектно-ориентированного программирования
Базовое представление о таблицах, строках, первичных и внешних ключах
Желательно знать основные SQL-команды SELECT, INSERT, UPDATE и DELETE
Установленный Python и умение создавать виртуальное окружение
Предварительный опыт работы с SQLAlchemy не требуется
Наши преподаватели
Как проходит обучение
Курс состоит из последовательных теоретических уроков и практических заданий
Каждая новая тема объясняется на небольших примерах и развивается на общей модели приложения для управления проектами
После каждого урока предлагаются задания для самостоятельного выполнения и точные критерии самопроверки
Вы будете постепенно создавать модели пользователей, профилей, проектов, задач, тегов и связей между ними
В примерах используется современный синтаксис SQLAlchemy 2.0
Практика охватывает синхронную и асинхронную работу, миграции, транзакции, безопасность и тестирование
Для обучения достаточно локальной SQLite, а примеры также объясняют особенности работы с PostgreSQL
Программа курса
Что вы получаете
- Системное понимание SQLAlchemy 2.0 — от Engine и Core до ORM и AsyncSession
- Практические навыки проектирования моделей и связей для реальных приложений
- Умение писать безопасные, предсказуемые и производительные запросы
- Опыт работы с миграциями Alembic, транзакциями и обработкой ошибок
- Навыки устранения N+1 и выбора подходящей стратегии загрузки отношений
- Готовые шаблоны организации Session в обычных и асинхронных приложениях
- Практику тестирования слоя базы данных с помощью pytest и фикстур
- Учебный проект предметной области с пользователями, проектами, задачами и тегами
- Материал, к которому можно возвращаться как к справочнику при разработке Python-приложений