Что такое ORM в Python
Популярные web приложения постоянно получают и отправляют множество новых данных, автоматически внося их в свою базу, при этом составление самих запросов лежит на плечах программиста. Реальное веб приложение потребует написания множества запросов на языке SQL. Для более лаконичного их представления и используются - Объектно-реляционные преобразователи или ORM. О преимуществах и недостатках, которых мы поговорим в данной статье.
Объектно-реляционный преобразователь (ORM) - это библиотека кода, которая автоматизирует перенос данных, хранящихся в таблицах реляционной базы данных, в объекты,которые используются в коде приложения.
Чем полезны ORM? ORM предоставляют высокоуровневую абстракцию реляционной базы данных, которая позволяет разработчику писать код Python вместо SQL для создания, чтения, обновления и удаления данных и схем в своей базе данных. Разработчики могут использовать язык программирования, который им удобен, для работы с базой данных вместо написания операторов SQL или хранимых процедур.
Например, без ORM разработчик написал бы следующий оператор SQL для получения каждой строки в таблице USERS, где столбец zip_code равен 94107:
SELECT * FROM USERS WHERE zip_code=94107;
#Вместо этого эквивалентный запрос ORM Django будет выглядеть как следующий код Python:
users = Users.objects.filter(zip_code=94107)
Возможность писать код Python вместо SQL может ускорить разработку веб-приложений, особенно в начале проекта. Потенциальное повышение скорости разработки связано с отсутствием необходимости переключаться с кода Python на написание операторов SQL с декларативной парадигмой.
ORM также теоретически позволяют переключать приложение между различными реляционными базами данных. Например, разработчик может использовать SQLite для локальной разработки и MySQL в производстве.
Однако на практике для локальной разработки лучше использовать ту же базу данных, что и в производстве. В противном случае в производственной среде могут возникнуть непредвиденные ошибки, которых не было в локальной среде разработки. Кроме того, проект редко переключается с одной производственной базы данных на другую, если только не было сереъезной причины.
Доступ к базе через Python ORM может осуществляться как в рамках соответствующих фреймворков Django, Flask, Tornado, так и на низком уровне с помощью библиотек коннекторов. Коннекторы могут пригодиться в том случае, когда скрипт предполагает обращение к базе данных, psycopg (для PostgreSQL) или MySQL-python (для MySQL).
Конечно же, подобные абстракции запросов SQL, сказываются на производительности, если речь идет о больших объемах данных, с чем хорошо справляется СУБД. При этом ORM хорошо справляется с запросами на небольшой части реляционной базы. Возможность же объектного представления запросов и данных реляционных баз решает задачу минимизации ошибок в программном коде.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.