
Пишем свой SQL query builder на Python: DSL, кеширование в Redis и защита от инъекций
Antony_Glyzin 1 минуту назад Пишем свой SQL query builder на Python: DSL, кеширование в Redis и защита от инъекций Уровень сложности Сложный Время на прочтение 7 мин Охват и читатели 0 SQL * Python * Базы данных *...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Antony_Glyzin 1 минуту назад Пишем свой SQL query builder на Python: DSL, кеширование в Redis и защита от инъекций Уровень сложности Сложный Время на прочтение 7 мин Охват и читатели 0 SQL * Python * Базы данных * Программирование * Open source * Туториал Из песочницы Я — Python-разработчик, и большую часть времени работаю с Django и пишу сырые SQL запросы. Мне нравится Django ORM и я не имею ничего против, но разбираясь с legacy кодом, я невольно стал задумываться, что файлы содержащие модели огромны. Вроде ничего такого, так и должно быть, проект большой и много кода.
Это в порядке вещей, так я решил. Выбросил лишние мысли и стал жить дальше. Но через несколько месяцев, мне показалось, что моделям не хватает кеширование данных.
Технические детали
Порой кусок данных в несколько тысяц строк приходится получать не один раз. В какой-то момент я задался вопрос, что было бы, если бы в Django не было бы моделей. И в этот момент все завертелось.
Это был мой вызов, который заставил меня двигаться. Мне хотелось видеть что-то похожее с SQLAlchemy или похожим на простой SQL, но при этом не контактировать с моделями и иметь возможность кешировать данные из коробки, а также иметь защиту от инъекций. Это был взрыв мозга, который зарядил меня делать эту библиотеку по праздникам, выходным и моим отпускам.
Я был этим так увлечен, как ребенок в свой рождественский день, что не заметил, как быстро выросла библиотека со своей ссылкой на pypi. Вот так появилась идея и библиотека, которую я назвал CORMless — «запросы в объектном стиле без моделей». Звучит, наверно, смешно, но давайте разберёмся, что это значит на практике.
Отраслевые последствия
Проблема: когда ORM избыточна ORM — мощный инструмент. Но есть сценарии, где он становится обузой: Динамическая структура БД. Если у вас legacy-база или часто меняется структура БД, вы не можете заранее описать модели.
Поддержка моделей превращается в бесконечную гонку. Что при этом придется делать: написать миграцию (к примеру, сервис миграций), обновить модель (возможно, в нескольких сервисах), согласовывать с командами, у которых есть зависимости по этому полю. Аналитика и сложные отчёты.
Когда нужны тройные JOIN с HAVING и GROUP BY , а не CRUD для одной таблицы. Также ORM поддерживает не все фичи СУБД. Микросервисы-адаптеры.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





