Обзор¶
SQLAlchemy SQL Toolkit и Object Relational Mapper - это полный набор инструментов для работы с базами данных и Python. В нем есть несколько отдельных функциональных областей, которые можно использовать по отдельности или комбинировать вместе. Его основные компоненты показаны ниже, а зависимости компонентов организованы в слои:
Выше приведены два наиболее значимых
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 - руководство по миграции.