close
Перейти к содержанию

SQLAlchemy

Материал из Википедии — свободной энциклопедии
SQLAlchemy
Логотип программы SQLAlchemy
Тип ORM
Автор Michael Bayer[1]
Написана на Python
Операционная система Кроссплатформенный
Дата выпуска 14 февраля 2006; 20 лет назад (2006-02-14)[2]
Последняя версия 2.0.52 (11 августа 2026)
Репозиторий github.com/sqlalchemy/sq…
Лицензия Лицензия MIT[3]
Сайт sqlalchemy.org (англ.)

SQLAlchemy — программная библиотека на языке Python для работы с реляционными СУБД с применением технологии ORM. Служит для синхронизации объектов Python и записей реляционной базы данных. SQLAlchemy позволяет описывать структуры баз данных и способы взаимодействия с ними на языке Python без использования SQL[4]. Библиотека была выпущена в феврале 2006 под лицензией открытого ПО MIT[5].

Работает back-end для баз данных: MySQL, PostgreSQL, SQLite, Oracle и других,[6] между которыми можно переключаться изменением конфигурации[4].

Основные возможности

[править | править код]
  • Использование ORM не является обязательным
  • Устоявшаяся архитектура
  • Возможность использовать SQL, написанный вручную
  • Поддержка транзакций
  • Создание запросов с использованием функций и выражений Python
  • Модульность и расширяемость
  • Дополнительная возможность раздельного определения объектного отображения и классов
  • Поддержка составных индексов
  • Поддержка отношений между классами, в том числе «один-ко-многим» и «многие-ко-многим»
  • Поддержка ссылающихся на себя объектов
  • Предварительная и последующая обработка данных (параметров запроса, результата)

и другие[7].

Преимущества использования

[править | править код]

Использование SQLAlchemy для автоматической генерации SQL-кода имеет несколько преимуществ по сравнению с ручным написанием SQL[8]:

  • Безопасность. Параметры запросов экранируются, что делает атаки типа внедрение 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[9]. Например, известный социальный новостной сайт Reddit построен с использованием SQLAlchemy[10]. Список организаций, использующих SQLAlchemy, можно найти на сайте проекта[11].

У SQLAlchemy имеется несколько аналогов, в том числе: SQLObject[англ.] и Storm[англ.].

Примечания

[править | править код]
  1. Mike Bayer is the creator of SQLAlchemy and Mako Templates for Python.
  2. Download - SQLAlchemy. SQLAlchemy. Дата обращения: 21 февраля 2015.
  3. zzzeek / sqlalchemy / source / LICENSE. BitBucket. Дата обращения: 21 февраля 2015.
  4. 1 2 Ziadé, 2008, p. 154—155.
  5. PyCon 2007 Wrapup Архивная копия от 21 октября 2012 на Wayback Machine,SQLAlchemy released 0.1.0 in February 2006 — O’Reilly Media
  6. SQLAlchemy Documentation, Engine Configuration. Дата обращения: 30 июля 2012. Архивировано из оригинала 15 июня 2012 года.
  7. SQLAlchemy Features. Дата обращения: 30 июля 2012. Архивировано 15 июня 2012 года.
  8. Copeland, 2008, p. 15.
  9. SQLAlchemyDA — a new unified database adapter for Zope 2. Дата обращения: 4 августа 2012. Архивировано 30 мая 2008 года.
  10. Ошибка в сносках?: Неверный тег <ref>; для сносок using не указан текст
  11. SQLAlchemy. Дата обращения: 22 октября 2019. Архивировано 3 ноября 2019 года.

Литература

[править | править код]
  • 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.