Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: orm, raw, sql

Использовался ли ORM и raw SQL?

Этот вопрос проверяет практический опыт работы с базой данных и понимание компромиссов между удобством ORM и контролем raw SQL.

Короткий ответ

ORM используют для ускорения разработки и упрощения работы с базой данных, а raw SQL — когда нужен полный контроль над запросами. В реальных проектах часто применяют оба подхода: ORM для типовых CRUD-операций, raw SQL — для сложных или критичных по производительности запросов. Важно понимать, как ORM формирует SQL, чтобы избегать лишних запросов и проблем с производительностью. Опытный разработчик выбирает инструмент исходя из задачи, а не “по привычке”.

Длинный ответ

На практике вопрос редко стоит как “или ORM, или raw SQL”. Обычно речь идёт о разумном сочетании этих подходов.

Определение

ORM (Object-Relational Mapping) — это слой, который позволяет работать с таблицами базы данных через объекты и классы языка программирования, скрывая явный SQL.

Когда используют ORM

ORM хорошо подходит для большинства стандартных задач:

  1. CRUD-операции

    • Создание, чтение, обновление и удаление записей.

    • Код получается короче и понятнее.

  2. Работа с моделями и связями

    • Связи один-к-одному, один-ко-многим.

    • Удобная навигация по объектам.

  3. Быстрая разработка

    • Меньше шаблонного кода.

    • Проще поддерживать и читать.

Пример идеи (упрощённо):

user = User.objects.get(id=1)
user.email = "new@mail.com"
user.save()

Когда используют raw SQL

Raw SQL выбирают, когда ORM становится ограничением:

  1. Сложные запросы

    • Много JOIN, подзапросы, оконные функции.

  2. Оптимизация производительности

    • Нужно строго контролировать план выполнения запроса.

  3. Массовые операции

    • Bulk insert/update, сложные агрегации.

  4. Специфичные возможности БД

    • Расширения, нестандартные типы данных, хинты.

Пример:

cursor.execute(
    "SELECT id, count(*) FROM orders GROUP BY id HAVING count(*) > 10"
)

Типовые проблемы при неправильном использовании ORM

  • N+1 запрос — множество лишних обращений к БД.

  • Сложно понять, какой SQL реально выполняется.

  • Иллюзия “бесплатных” операций, которые на деле дорогие.

Практический подход, который ценят на собеседованиях

  • ORM — основной инструмент.

  • Raw SQL — осознанное исключение.

  • Понимание SQL обязательно, даже при активном использовании ORM.

Вывод

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

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • Python

    Python

Ключевые слова

#orm

#raw

#sql

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.