SQL-инъекция. Внедрение SQL кода часть 1
Django, CTE и рекурсивные запросы: Сегодня продолжаю переводить непопулярные видео в текстовый формат, и на очереди — Common Table Expressions (CTE) в Django, а также рекурсивные SQL-запросы CTE — это мощный инструмент SQL, который позволяет временно хранить результаты выборки прямо во время выполнения запроса. А с помощью рекурсивных запросов можно решать сложные задачи, например, построение иерархий. Такие задачи часто встречаются в приложениях, где нужно обработать структуры с неизвестной глубиной — например, дочерние организации внутри одной компании Допустим, у вас есть организация с дочерними структурами. Вы хотите вывести все родительские организации вплоть до самого верхнего звена. Для этого создаётся рекурсивный SQL-запрос, который обходит каждую организацию по цепочке "дочерняя-родительская" Что это даёт? CTE позволяют сделать сложные запросы более понятными и удобными для поддержки Рекурсия: позволяет строить иерархии с неизвестной глубиной — от любой "дочерней" структуры к её "предку" Пример SQL с использованием CTE WITH RECURSIVE OrgHierarchy AS ( SELECT id, name, parent_id, 1 AS level FROM organization WHERE parent_id IS NULL UNION ALL SELECT org.id, org.name, org.parent_id, oh.level + 1 FROM organization org JOIN OrgHierarchy oh ON org.parent_id = oh.id ) SELECT * FROM OrgHierarchy; Как это применить в Django? В Django для работы с CTE и рекурсией можно использовать пакет django-cte. Он позволяет легко CTE-запросы к ORM и гибко манипулировать данными, не покидая привычного интерфейса Django Практические примеры — в видео А предыдущий пост про сериализацию данных вы найдете тут #непопулярные_видео
Postgres. Пишем запросы на SQL (CTE). Статья 7
Все ссылки на статьи и ролики моего канала Old Programmer: Мои материалы по языку SQL здесь. Материалы переносятся на мо новый канал. Материалы по CTE здесь Напишите и подписывайтесь на мой канал programmer's notes...