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.50 — 2026.
- ↑ 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.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.