LINUX.ORG.RU

Библиотека абстрактного CRUD для FastAPI+SQLModel: нужно ли?

 , , , ,


0

1

Поздравляю всех с наступающим/наступившим новым годом!

Очередной проект на Python, включающий в себя операции с реляционными данными и API для доступа к ним, но для работы которого функционал Django избыточен, делаю на FastAPI – в этот раз с SQLModel, что объединяет модели и схемы сущностей в одном определении класса (с прямым доступом к SQLAlchemy при необходимости) и работает с валидаторами Pydantic. Заметил, что в очередной раз пишу примерно один и тот же boilerplate код для реализации CRUD-операций и накатал (пока что не очень хорошего) качества код, что работает со схемами Pydantic и моделями SQLModel, оборачивая обработчики эндпойнтов в декораторы, что исполняют сами запросы.

Погуглил альтернативы – и они есть (quickcrud, simple-crud), в связи с чем стало интересно, используют ли подобные библиотеки в продакшн и имеет ли смысл их применять. Большинство запросов так или иначе можно обернуть в Query той же SQLAlchemy и с помощью композиции добавлять во время запроса к БД; с другой стороны, явный и чистый код может быть ценнее короткого кода со стопкой декораторов над каждым обработчиком, и самому писать этот код может быть предпочтительнее.

Интересно ваше мнение, имеет ли смысл выносить свой код из проекта в отдельную библиотеку (третью или которую там по счету) и дописывать под распространенные задачи и области применения. Что бы потребовалось из минимального функционала такой библиотеке?

★★★

Из моего опыта - все вот эти магические генераторы, что под капотом творят магию, приводили только к усложнению понимания кода на средней дистанции. С тем же Django REST намучался прилично, так что в части проектов просто руками генерю ответы (код получается проще и понятнее, как по мне).

Так что лично я бы не стал искать какую-то стороннюю либу, чтобы автоматизировать генерацию CRUD запросов. Но в моей практике - чистый CRUD как-то не особо нужен оказывается, мб у кого-то иначе.

PS PEP20 - Explicit is better than implicit.

Norgat ★★★★★
()

во первых с новым годом !

далее: вот чего весьма не хватало в предыдущем году, SQL(или прокси) которому запросы отдаются http:80/443 и оттуда-же получаются ответы. Потому как всякой эмбедщине надо доступаться к базам самым простым путём. Нужен этот самый короткий путь.

MKuznetsov ★★★★★
()
Ответ на: комментарий от Norgat

в части проектов просто руками генерю ответы (код получается проще и понятнее, как по мне)

Это полезно и в части делегирования работы молодым джунам.

Ниже порог вхождения.

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

Mirage1_
()