• Информация на сайте предоставляется «как есть», может содержать неточности и не является консультацией или офертой.
  • Перед использованием проконсультируйтесь со специалистом.

Используя сайт, вы подтверждаете, что вы изучили и согласны с документами Политика конфиденциальности и обработки персональных данныхи Пользовательское соглашение.

Сайт использует cookies для работы и сбора аналитики. Вы можете принять или настроить их, а также полностью отключить в настройках браузера.

Настройки cookies
Необходимые для работы веб-сайта

Используются для входа, навигации и защиты (например: sessionid, csrftoken). Без них сайт может работать с перебоями.

Помогают улучшить сайт, собирая статистику посещений (например, через Яндекс Метрику).

Используются для показа персонализированной рекламы и ретаргетинга в рекламных сетях.

Настройки интерфейса

Декоративный эффект свечения при клике по странице.

DEV -
PROGRAM.RU
Контакты

Django ORM: общий обзор и работа с базой данных

Проясняем что такое и как работает Django ORM. Разбираем преимущества, недостатки и поддержку баз данных.

Django ORM

Работа с базами данных является неотъемлемой частью разработки веб-приложений.

В современном мире люди привыкли к комфорту и ожидают удобное управление даже данными.

В этой вступительной статье посмотрим что нам предлагает Django ORM.

Что такое Django ORM

Прежде мы рассмотрели что такое Django, а ORM это его компонент и расшифровывается как Object-Relational Mapping, то есть «объектно-реляционная связь».

ORM связывает объекты приложения с данными, хранящимися в таблицах баз данных, после чего позволяет выполнять операции используя не SQL синтаксис, а язык python.

Простыми словами, Django ORM позволяет обращаться к базе данных не зная SQL.

Зачем нужен Django ORM

Без Django ORM python разработчику пришлось бы самостоятельно каждый раз писать муторный и однотипный код или создать альтернативу многократно протестированному Django ORM, для таких задач как:

  • Получение данных

    Выбирать строки таблицы по заданным условиям

  • Создание и изменение данных

    Добавлять новые записи и изменять существующие

  • Удаление данных

    Удалять строки из базы данных

  • Работа со связями

    Получать связанные объекты и вручную писать JOIN для каждого запроса

Как работает Django ORM

Django ORM работает как посредник между Python-приложением и базой данных.

В списке ниже описана подробная логика работы ORM:

  1. Описание моделей

    Разработчик описывает структуру данных будущей таблицы в виде модели

  2. Синхронизация моделей с базой данных

    С помощью миграций Django приводит таблицы в базе данных в соответствии с моделями

  3. Формирование запросов

    При запросе, например: получи все строки таблицы, Django ORM преобразует операции Python в SQL-запросы

  4. Выполнение SQL-запроса

    База данных (СУБД) выполняет SQL-запрос и возвращает результат

  5. Преобразование результата

    Django ORM преобразует полученные данные в объекты Python, с которыми приложение может работать

Django ORM цикл работы на примере запроса 1 строки

Как Django ORM преобразует Python в SQL

Django ORM для преобразования Python в SQL использует специальные методы и механизмы, которые анализируют запрос, формируют соответствующую SQL-команду и передают её базе данных для выполнения.

Для лучшего понимания ниже 2 примера при помощи Django ORM и SQL.

Product.objects.filter(price__gt=100)

пример django ORM получает продукты по цене дороже 100

SELECT *
FROM product
WHERE price > 100;

пример SQL получает продукты по цене дороже 100

С какими базами данных работает Django ORM

Django ORM поддерживает несколько реляционных систем управления базами данных. К основным относятся:

  • PostgreSQL

  • SQLite

  • MySQL/MariaDB

Хоть и в зависимости от типа базы данных сам SQL код может отличаться, в большинстве случаев для разработчика Django это не имеет значения, ведь ORM делает всю грязную работу.

Некоторые типы баз данных имеют отличия, а иные слабую совместимость с Python, например: Microsoft Access, Microsoft SQL Server (MSSQL) и периодически потребуется писать запросы на сыром SQL.

Преимущества и недостатки Django ORM

К основным преимуществам Django ORM относятся:

  • Интеграция с Django - ускоряет разработку

    ORM автоматически взаимодействует с моделями, формами, административной панелью и другими компонентами фреймворка django

  • Один язык для работы с данными

    Большинство операций можно описывать на питоне

  • Поддержка разных СУБД

    Django ORM позволяет менять безшовно базу данных между PostgreSQL, MySQL, SQLite и Oracle, используя тот же код для многих операций с данными

  • Безопасная параметризация запросов

    Стандартные ORM-операции помогают избежать SQL-инъекций при правильном использовании

  • Поддержка транзакций

    Django позволяет объединять операции с базой данных в транзакции (несколько действий в 1 применение) и отменять их в случае неудачи

  • Инструменты для оптимизации

    Django ORM поддерживает выборочную загрузку данных, массовые операции, предварительную загрузку связанных объектов и другие средства управления запросами

Недостатки у Django ORM тоже имеются, но проявляются в основном в неумелых руках или на слишком больших проектах.

  • Ограничения при сложных запросах

    Некоторые сложные SQL-запросы, аналитические выборки и специфические операции базы данных проще реализовать на чистом SQL

  • Снижение производительности при неправильном использовании

    Необдуманные ORM-запросы могут приводить к лишним обращениям к базе данных (загружая ненужное), проблеме N+1 и увеличению времени выполнения операций

  • Необходимость понимать SQL

    Для решения проблем производительности в крупных проектах все же требуется понимание SQL

  • Дополнительные накладные расходы

    Создание Python-объектов и обработка результатов ORM могут увеличивать потребление памяти и время выполнения операций при работе с большими объёмами данных

В этой статье мы рассмотрели что такое Django ORM, если у вас остались вопросы вы можете написать программисту.

Вам может быть интересно

Поделиться
Ничего не найдено
Найдите нужную страницу

Статьи, инструменты и помощь