MetaORM — когда устал от ORM настолько, что написал свою
Ryder95 12 минут назад MetaORM — когда устал от ORM настолько, что написал свою Средний 10 мин 208 Блог компании Cloud.ru Python * Базы данных * Туториал Всем привет! Меня зовут Юрчик Олег, я старший Python разработчик...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. Ryder95 12 минут назад MetaORM — когда устал от ORM настолько, что написал свою Средний 10 мин 208 Блог компании Cloud. ru Python * Базы данных * Туториал Всем привет! Меня зовут Юрчик Олег, я старший Python разработчик в Cloud.
ru и моя основная специализация — backend-разработка. Не секрет, что работа с базами данных для backend-разработчика — это база. Каждый из нас должен знать, что такое БД, понимать, как они работают и уметь с ними работать.
Технические детали
Когда вы пишете курсовую в университете, делаете тестовое задание, мучаетесь ночами с пет-проектом или работаете над High-Load AI Six-Seven B2B SaaS — везде вас поджидают базы данных. Я программирую уже 16 лет, как минимум 10 из них — это ежедневная работа с СУБД. И я до сих пор плохо знаю SQL.
За все время я так и не выучил расшифровку аббревиатуры ACID, иногда путаюсь в уровнях изоляции, а написать простой запрос с использованием различных JOIN или HAVING могу только с Гуглом. И дело не в том, что я плохой разработчик, хотя тоже не исключено. За все 7 лет коммерческой разработки мне ни разу не понадобилось писать сложный SQL-запрос, а больше 50% функционала популярных ORM так ни разу и не использовались мной.
Ну ведь правда, согласитесь? ORMНачну с истории о том, как в этой версии вселенной я дошел до момента, в котором пишу эту статью. Всю свою жизнь я использую SQLAlchemy —это единственный правильный выбор для Python-разработчика.
Отраслевые последствия
Данный пакет встречается повсеместно и позволяет максимально гибко реализовывать разные сценарии — от самых простых задач до сложных запросов с агрегацией данных, вложенными транзакциями, подзапросами и так далее. При этом в реальных проектах чаще всего используется только малая часть всей библиотеки. Обычно для сервиса требуется CRUD для данных и взаимосвязи между таблицами, и больше ничего.
Если же есть проблемы со скоростью запросов, то в 95% случаев они решаются проставлением корректных индексов и правильным выбором между joinedload и selectinload. В итоге SQLAlchemy предлагает множество путей для реализации одной и той же задачи, ставя в тупик новичков и заставляя их изучать десятки страниц документации, чтобы понять разницу и сделать правильный выбор. В первую очередь я имею ввиду пакеты ORM и Core, но это также относится и к различным мелочам типа функций exec и execute.
Пост ORMSQLModel — первый шаг к счастьюСо временем я понял, что для многих моих проектов чистый SQLAlchemy — это оверхед. Тогда я нашел SQLModel, библиотеку от создателя FastAPI, которая сочетает в себе гибкость SQLAlchemy и красоту моделей из Pydantic. Теперь таблицы — это не просто кастомный класс, а полноценные DTO-классы, обладающие такими замечательными свойствами, как валидация и сериализация или десериализация, при этом сохраняющие в себе свойства таблиц типа relationships и lazy loading.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





