SQLАлхимия
Инструментарий Python SQL и реляционный преобразователь объектов
Введение
SQLAlchemy — это набор инструментов Python SQL и реляционный преобразователь объектов, который предоставляет разработчикам приложений всю мощь и гибкость SQL. SQLAlchemy предоставляет полный набор хорошо известных шаблонов персистентности корпоративного уровня, предназначенных для эффективного и высокопроизводительного доступа к базе данных, адаптированных к простому предметному языку Pythonic.
Основные функции SQLAlchemy включают в себя:
- Промышленная ORM, построенная на основе карты идентичности, единиц работы и шаблонов преобразователей данных. Эти шаблоны обеспечивают прозрачное сохранение объектов с использованием декларативной системы конфигурации. Модели предметной области можно создавать и манипулировать ими естественным образом, а изменения автоматически синхронизируются с текущей транзакцией.
- Реляционно-ориентированная система запросов, явно раскрывающая весь спектр возможностей SQL, включая соединения, подзапросы, корреляцию и многое другое, с точки зрения объектной модели. При написании запросов с помощью ORM используются те же методы реляционной композиции, которые вы используете при написании SQL. Хотя вы можете перейти к буквальному SQL в любое время, он практически никогда не понадобится.
- Комплексная и гибкая система быстрой загрузки связанных коллекций и объектов. Коллекции кэшируются внутри сеанса и могут быть загружены при индивидуальном доступе, все сразу с помощью объединений или путем запроса для каждой коллекции по всему набору результатов.
- Система построения Core SQL и уровень взаимодействия DBAPI. Ядро SQLAlchemy отделено от ORM и само по себе представляет собой полный уровень абстракции базы данных и включает в себя расширяемый язык выражений SQL на основе Python, метаданные схемы, пул соединений, приведение типов и пользовательские типы.
- Предполагается, что все ограничения первичного и внешнего ключей являются составными и естественными. Суррогатные целочисленные первичные ключи, конечно, по-прежнему являются нормой, но SQLAlchemy никогда не предполагает и не жестко запрограммирует эту модель.
- Интроспекция и генерация базы данных. Схемы баз данных можно за один шаг «отразить» в структурах Python, представляющих метаданные базы данных; те же самые структуры могут затем сразу же генерировать операторы CREATE — и все это внутри ядра, независимо от ORM.
Философия SQLAlchemy:
- Базы данных SQL все меньше и меньше ведут себя как коллекции объектов, чем больше начинают иметь значение размер и производительность; Коллекции объектов все меньше и меньше ведут себя как таблицы и строки, чем больше абстракции начинает иметь значение. SQLAlchemy стремится учесть оба этих принципа.
- ORM не нужно скрывать букву «R». Реляционная база данных предоставляет богатую функциональность на основе наборов, которая должна быть полностью раскрыта. ORM SQLAlchemy предоставляет открытый набор шаблонов, которые позволяют разработчику создавать собственный посреднический уровень между моделью предметной области и реляционной схемой, превращая так называемую проблему «реляционного импеданса объекта» в далекое воспоминание.
- Разработчик во всех случаях принимает все решения относительно дизайна, структуры и соглашений об именах как объектной модели, так и реляционной схемы. SQLAlchemy предоставляет только средства для автоматизации выполнения этих решений.
- В SQLAlchemy нет такой вещи, как «ORM сгенерировал неверный запрос» — вы сохраняете полный контроль над структурой запросов, включая то, как организованы соединения, как используются подзапросы и корреляция, какие столбцы запрашиваются. Все, что делает SQLAlchemy, в конечном итоге является результатом решения, инициированного разработчиком.
- Не используйте ORM, если проблема в нем не нуждается. SQLAlchemy состоит из ядра и отдельного компонента ORM. Ядро предлагает полный язык выражений SQL, который позволяет создавать конструкции SQL на языке Python, которые визуализируются непосредственно в строки SQL для целевой базы данных, возвращая наборы результатов, которые по сути представляют собой улучшенные курсоры DBAPI.
- Транзакции должны быть нормой. При использовании ORM SQLAlchemy ничего не попадает в постоянное хранилище до тех пор, пока не будет вызвана функция commit(). SQLAlchemy поощряет приложения создавать согласованные средства определения начала и конца серии операций.
- Никогда не отображайте буквальное значение в инструкции SQL. Связанные параметры используются в максимально возможной степени, что позволяет оптимизаторам запросов эффективно кэшировать планы запросов и делает атаки SQL-инъекцией не проблемой.
Документация
Последняя документация находится по адресу:
https://www.sqlalchemy.org/docs/
Установка/Требования
Полная документация по установке находится на странице Установка.
Получение помощи/разработка/отчеты об ошибках
Пожалуйста, обратитесь к Руководству сообщества SQLAlchemy.
Нормы поведения
Прежде всего, SQLAlchemy уделяет большое внимание вежливому, вдумчивому и конструктивному общению между пользователями и разработчиками. Пожалуйста, ознакомьтесь с нашим действующим Кодексом поведения на странице Кодекс поведения.
Лицензия
SQLAlchemy распространяется по лицензии MIT.