Руководство по составлению запросов в ORM¶
В этом разделе представлен обзор создания запросов с помощью SQLAlchemy ORM с использованием 2.0 style.
Читатели этого раздела должны быть знакомы с обзором SQLAlchemy в разделе Унифицированный учебник по SQLAlchemy, и, в частности, большая часть содержания этого раздела развивает содержание раздела Использование операторов SELECT.
Для пользователей SQLAlchemy 1.x
В SQLAlchemy серии 2.x операторы SQL SELECT для ORM строятся с использованием той же конструкции select()
, что и в Core, которая затем вызывается в терминах Session
с помощью метода Session.execute()
(как и конструкции update()
и delete()
, используемые сейчас для функции Операции INSERT, UPDATE и DELETE с поддержкой ORM). Однако старый объект Query
, выполняющий те же действия в виде объекта «все в одном», продолжает оставаться доступным в качестве тонкого фасада над этой новой системой, чтобы поддерживать приложения, построенные на базе серии 1.x, без необходимости полной замены всех запросов. Подробнее об этом объекте см. в разделе Legacy Query API.
- Написание операторов SELECT для отображаемых классов ORM
- Выбор сущностей и атрибутов ORM
- Выбор сущностей ORM
- Одновременный выбор нескольких сущностей ORM
- Выбор отдельных атрибутов
- Группировка выбранных атрибутов с помощью пакетов
- Выбор псевдонимов ORM
- Получение результатов ORM из текстовых высказываний
- Выбор сущностей из подзапросов
- Выбор сущностей из UNION и других операций над множествами
- Присоединяйтесь к
- Простые соединения отношений
- Объединение нескольких соединений
- Присоединения к целевой сущности
- Присоединения к цели с помощью предложения ON
- Объединение отношений с пользовательскими критериями ON
- Использование Relationship для объединения смежных целей
- Присоединение к подзапросам
- Присоединение к подзапросам по путям отношений
- Подзапросы, относящиеся к нескольким сущностям
- Установка крайнего левого предложения FROM в объединении
- Операторы отношения WHERE
- Выбор сущностей и атрибутов ORM
- Написание операторов SELECT для отображений наследования
- Выборка из базового класса в сравнении с конкретными подклассами
- Использование функции selectin_polymorphic()
- Использование функции with_polymorphic()
- Присоединение к определенным подтипам или сущностям with_polymorphic()
- Операторы SELECT для отображений с одним наследованием
- Наследование Загрузка API
- Операции INSERT, UPDATE и DELETE с поддержкой ORM
- Варианты загрузки колонн
- Ограничение загрузки столбцов с помощью функции Column Deferral
- Настройка отсрочки колонок в сопоставлениях
- Использование
deferred()
для императивных отображателей, отображаемых SQL-выражений - Использование
undefer()
для «нетерпеливой» загрузки отложенных столбцов - Загрузка отложенных столбцов в группах
- Разложение по группам с помощью
undefer_group()
- Отмена разделения на подстановочные знаки
- Настройка поведения «raiseload» на уровне картографа
- Использование
- Загрузка произвольных SQL-выражений в объекты
- API загрузки столбцов
- Техники загрузки отношений
- Краткое описание стилей загрузки отношений
- Настройка стратегий загрузчика в момент отображения
- Загрузка отношений с помощью опций загрузчика
- Ленивая загрузка
- Присоединился к Eager Loading
- Выберите загрузку IN
- Ускоренная загрузка подзапросов
- Какой тип загрузки использовать?
- Полиморфная ускоренная загрузка
- Стратегии загрузки с использованием диких символов
- Маршрутизация явных объединений/выражений в коллекциях, загружаемых с нетерпением
- API загрузчика отношений
- Возможности ORM API для создания запросов
- Legacy Query API