SQLAlchemy - это всеобъемлющий набор инструментов для работы с базами данных в рамках языка программирования Python. Она имеет несколько различных сфер функциональности, которые могут быть использованы как отдельно, так и совместно. Самые главные её компоненты изображены ниже:

sqla_arch_small.png

На схеме две наиболее важные части SQLAlchemy объединены пунктиром в ORM и Core. Core (или ядро) содержит собственный язык SQL запросов, осуществляет поддержку различных диалектов SQL, а также осуществляет общую интеграцию с самой базой данных, в том числе контролирует соединения с ней.

Язык SQL выражений алхимии - это полноценная система, независимая от ORM, которая предоставлят возможность построения реальных SQL запросов к базам данных с помощью Python объектов и функций внутри конкретной транзакции, возвращающей результат. Вставки (Insert), обновления (Updates), и удаления (Deletes), так называемые операции DML (Data Manipulation Language) достигаются с помощью проверки объектов языка SQL алхимии, которые представлены этими выражениями, а также словарями, которые хранят в себе параметры, необходимые для использования при выполнении каждого выражения.

ORM работает поверх ядра и предоставляет возможность работы с объектами-моделями, связанными со схемами в базе данных. При использовании ORM, SQL выражения создаются практически также, как и в Core, однако задачу DML, которая в данном случае уже представляет собой манипуляции с объектами бизнес-логики, автоматически решает использование паттерна, называемого “объединение работ” (unit of work), который транслирует изменения в состоянии объектов ORM в Insert/Update/Delete конструкции. Выражения SELECT также реализуются с применением объектов ORM, об этом мы подробнее поговорим в главе “Работа с данными”.

Как бы вы ни работали с алхимией: только используя Core или ORM - язык SQL выражений всегда будет представлять собой схематичное отображение базы данных. Разница лишь в том, что в Core он ориентирован на операции, а в ORM на объекты.