Обзор

SQLAlchemy SQL Toolkit и Object Relational Mapper - это полный набор инструментов для работы с базами данных и Python. В нем есть несколько отдельных функциональных областей, которые можно использовать по отдельности или комбинировать вместе. Его основные компоненты показаны ниже, а зависимости компонентов организованы в слои:

../_images/sqla_arch_small.png

Выше приведены два наиболее значимых

Core содержит широкий спектр услуг SQLAlchemy по интеграции и описанию SQL и баз данных, наиболее заметной частью которых является SQL Expression Language.

Язык выражений SQL - это самостоятельный инструментарий, независимый от пакета ORM, который предоставляет систему построения выражений SQL, представленных в виде составных объектов, которые затем могут быть «выполнены» против целевой базы данных в рамках определенной транзакции, возвращая набор результатов. Вставки, обновления и удаления (т.е. DML) достигаются путем передачи объектов SQL-выражений, представляющих эти операторы, вместе со словарями, представляющими параметры для использования с каждым оператором.

ORM основывается на Core и предоставляет средства для работы с объектной моделью домена, сопоставленной со схемой базы данных. При использовании ORM операторы SQL строятся в основном так же, как и при использовании Core, однако задача DML, которая здесь относится к сохранению бизнес-объектов в базе данных, автоматизируется с помощью паттерна unit of work, который переводит изменения состояния в отношении изменяемых объектов в конструкции INSERT, UPDATE и DELETE, которые затем вызываются в терминах этих объектов. Операторы SELECT также дополнены специфическими для ORM автоматизациями и возможностями объектно-ориентированных запросов.

Если работа с Core и языком SQL Expression представляет схемно-ориентированное представление базы данных, а также парадигму программирования, ориентированную на неизменяемость, то ORM строит поверх этого доменно-ориентированное представление базы данных с парадигмой программирования, более явно объектно-ориентированной и полагающейся на изменяемость. Поскольку реляционная база данных сама по себе является изменяемым сервисом, разница заключается в том, что язык Core/SQL Expression ориентирован на команды, в то время как ORM ориентирован на состояние.

Обзор документации

Документация разделена на четыре раздела:

  • Унифицированный учебник по SQLAlchemy - этот совершенно новый учебник для серии SQLAlchemy 1.4/2.0 представляет всю библиотеку в целом, начиная с описания Core и все больше и больше продвигаясь к специфическим концепциям ORM. Новым пользователям, а также пользователям, пришедшим из SQLAlchemy серии 1.x, следует начать именно с этого руководства.

  • SQLAlchemy ORM - В этом разделе представлена справочная документация по ORM.

  • Ядро SQLAlchemy - Здесь представлена справочная документация по всему остальному в Core. Здесь также описаны движок SQLAlchemy, соединения и службы пула.

  • Диалекты - Предоставляет справочную документацию для всех реализаций dialect, включая специфику DBAPI.

Примеры кода

Примеры рабочего кода, в основном касающиеся ORM, включены в дистрибутив SQLAlchemy. Описание всех включенных примеров приложений находится по адресу Примеры ORM.

В вики также имеется большое количество примеров с использованием как основных конструкций SQLAlchemy, так и ORM. См. Theatrum Chemicum.

Руководство по установке

Поддерживаемые платформы

SQLAlchemy поддерживает следующие платформы:

  • cPython 3.7 и выше

  • Версии PyPy, совместимые с Python-3

Изменено в версии 2.0: SQLAlchemy теперь нацелен на Python 3.7 и выше.

Поддержка AsyncIO

Поддержка SQLAlchemy asyncio зависит от проекта greenlet. Эта зависимость будет установлена по умолчанию на распространенных машинных платформах, однако она поддерживается не на всех архитектурах, а также может не устанавливаться по умолчанию на менее распространенных архитектурах. Дополнительные сведения об обеспечении поддержки asyncio см. в разделе Указания по установке платформы Asyncio (включая Apple M1).

Поддерживаемые методы установки

Установка SQLAlchemy осуществляется с помощью стандартных методик Python, основанных на setuptools, либо обращаясь непосредственно к setup.py, либо используя pip или другие совместимые с setuptools подходы.

Установите с помощью pip

Когда pip доступен, дистрибутив можно скачать с PyPI и установить в один шаг:

pip install SQLAlchemy

Эта команда загрузит последнюю выпущенную версию SQLAlchemy с сайта Python Cheese Shop и установит ее в вашу систему. Для большинства распространенных платформ будет загружен файл Python Wheel, который предоставляет встроенные расширения Cython / C.

Для установки последней предрелизной версии, такой как 2.0.0b1, pip требует использования флага --pre:

pip install --pre SQLAlchemy

Если последняя версия является предварительной версией, то она будет установлена вместо последней выпущенной версии.

Установка вручную из исходного дистрибутива

Если установка производится не из pip, исходный дистрибутив можно установить с помощью скрипта setup.py:

python setup.py install

Исходная установка является платформой ag

Создание расширений Cython

SQLAlchemy включает расширения Cython, которые обеспечивают дополнительный прирост скорости в различных областях, с текущим акцентом на скорость наборов результатов Core.

Изменено в версии 2.0: Расширения SQLAlchemy на C были переписаны с использованием Cython.

setup.py автоматически соберет расширения, если будет обнаружена соответствующая платформа, при условии, что установлен пакет Cython. Полная ручная сборка выглядит следующим образом:

# cd into SQLAlchemy source distribution
cd path/to/sqlalchemy

# install cython
pip install cython

# optionally build Cython extensions ahead of install
python setup.py build_ext

# run the install
python setup.py install

Сборка исходных текстов может также выполняться с помощью методов PEP 517, например, с помощью build:

# cd into SQLAlchemy source distribution
cd path/to/sqlalchemy

# install build
pip install build

# build source / wheel dists
python -m build

Если сборка расширений Cython не удалась из-за того, что Cython не установлен, отсутствует компилятор или возникла другая проблема, процесс установки выдаст предупреждение и повторно запустит сборку без расширений Cython после завершения, сообщив об окончательном состоянии.

Чтобы запустить сборку/установку без попытки компиляции расширений Cython, можно указать переменную окружения DISABLE_SQLALCHEMY_CEXT. Это нужно либо для особых условий тестирования, либо в редких случаях, когда проблемы совместимости/сборки не преодолеваются обычным механизмом «пересборки»:

export DISABLE_SQLALCHEMY_CEXT=1; python setup.py install

Установка API базы данных

SQLAlchemy является разработкой

Проверка установленной версии SQLAlchemy

Эта документация охватывает SQLAlchemy версии 2.0. Если вы работаете в системе, где уже установлен SQLAlchemy, проверьте версию из подсказки Python следующим образом:

>>> import sqlalchemy
>>> sqlalchemy.__version__  
2.0.0

Следующие шаги

Установив SQLAlchemy, как новые, так и старые пользователи могут Proceed to the SQLAlchemy Tutorial.

Миграция с 1.x на 2.0

Заметки о новом API, выпущенном в SQLAlchemy 2.0, доступны здесь SQLAlchemy 2.0 - руководство по миграции.

Вернуться на верх