SQLAlchemy — Википедия
SQLAlchemy | |
---|---|
Тип | ORM |
Разработчик | Mike Bayer[1] |
Написана на | Python[3] |
Операционная система | Кроссплатформенное ПО |
Последняя версия |
|
Репозиторий | github.com/sqlalchemy/sq… |
Лицензия | лицензия MIT[4][5] |
Сайт | sqlalchemy.org |
SQLAlchemy — программная библиотека на языке Python для работы с реляционными СУБД с применением технологии ORM. Служит для синхронизации объектов Python и записей реляционной базы данных. SQLAlchemy позволяет описывать структуры баз данных и способы взаимодействия с ними на языке Python без использования SQL[6]. Библиотека была выпущена в феврале 2006 под лицензией открытого ПО MIT[7].
Работает back-end для баз данных: MySQL, PostgreSQL, SQLite, Oracle и других,[8] между которыми можно переключаться изменением конфигурации[6].
Основные возможности
[править | править код]- Использование ORM не является обязательным
- Устоявшаяся архитектура
- Возможность использовать SQL, написанный вручную
- Поддержка транзакций
- Создание запросов с использованием функций и выражений Python
- Модульность и расширяемость
- Дополнительная возможность раздельного определения объектного отображения и классов
- Поддержка составных индексов
- Поддержка отношений между классами, в том числе «один-ко-многим» и «многие-ко-многим»
- Поддержка ссылающихся на себя объектов
- Предварительная и последующая обработка данных (параметров запроса, результата)
и другие[9].
Преимущества использования
[править | править код]Использование SQLAlchemy для автоматической генерации SQL-кода имеет несколько преимуществ по сравнению с ручным написанием SQL[10]:
- Безопасность. Параметры запросов экранируются, что делает атаки типа внедрение SQL-кода маловероятными.
- Производительность. Повышается вероятность повторного использования запроса к серверу базы данных, что может позволить ему в некоторых случаях применить повторно план выполнения запроса.
- Переносимость. SQLAlchemy, при должном подходе, позволяет писать код на Python, совместимый с несколькими back-end СУБД. Несмотря на стандартизацию языка SQL, между базами данных имеются различия в его реализации, абстрагироваться от которых и помогает SQLAlchemy.
Пример
[править | править код]Простейший пример с использованием SQLAlchemy в оперативной памяти:
>>> from sqlalchemy import create_engine >>> engine = create_engine('sqlite:///:memory:') >>> engine.execute("select 'Hello, World!'").scalar() 'Hello, World!'
Применение и аналоги
[править | править код]SQLAlchemy находит применение в веб-фреймворках TurboGears, Pylons, Pyramid, Zope[11]. Например, известный социальный новостной сайт Reddit построен с использованием SQLAlchemy[1]. Список организаций, использующих SQLAlchemy, можно найти на сайте проекта[12].
У SQLAlchemy имеется несколько аналогов, в том числе: SQLObject[англ.] и Storm[англ.].
Примечания
[править | править код]- ↑ 1 2 AIX and UNIX Technical library, Using SQLAlchemy . Дата обращения: 26 июня 2009. Архивировано 2 апреля 2012 года.
- ↑ Release 2.0.36 — 2024.
- ↑ The sqlalchemy Open Source Project on Open Hub: Languages Page — 2006.
- ↑ http://www.sqlalchemy.org/download.html
- ↑ The sqlalchemy Open Source Project on Open Hub: Licenses Page — 2006.
- ↑ 1 2 Ziadé, 2008, p. 154—155.
- ↑ PyCon 2007 Wrapup Архивная копия от 21 октября 2012 на Wayback Machine,SQLAlchemy released 0.1.0 in February 2006 — O’Reilly Media
- ↑ SQLAlchemy Documentation, Engine Configuration . Дата обращения: 30 июля 2012. Архивировано из оригинала 15 июня 2012 года.
- ↑ SQLAlchemy Features . Дата обращения: 30 июля 2012. Архивировано 15 июня 2012 года.
- ↑ Copeland, 2008, p. 15.
- ↑ SQLAlchemyDA — a new unified database adapter for Zope 2 . Дата обращения: 4 августа 2012. Архивировано 30 мая 2008 года.
- ↑ SQLAlchemy . Дата обращения: 22 октября 2019. Архивировано 3 ноября 2019 года.
Ссылки
[править | править код]- Домашняя страница проекта (англ.)
- Gift, Noah Using SQLAlchemy . Developerworks. IBM. Архивировано 2 апреля 2012 года.
Литература
[править | править код]- Rick Copeland. Essential SQLAlchemy. — O'Reilly Media., 2008. — 215 с. — ISBN 0-596-51614-2.
- Tarek Ziadé. Expert Python Programming. — Packt Publishing Ltd., 2008. — 372 с. — ISBN 978-1-847194-94-7.