Зачем бэкенду уметь писать запросы к БД?
==========================================

 Основной инструмент любого бэкенд разработчика - это фреймворк(не считая языка программирования конечно), а в почти каждом из них есть функции, которые сами прописывают запрос к БД, я уже не помню, как они называются. Скажем, вместо прописывания запроса на выборку из всех записей по какому-то правилу, например в Джанго, можно просто прописать {название модели}.objects.filter(параметры). Так тут вырисовывается вопрос: зачем нужно прям принципиально уметь прописывать запросы к БД? Я может чего-то не понимаю? 

 да, вы не понимаете.   

шняга, которую вы не помните, называется ORM. и её действительно хватает для типовых задач.   

проблемы возникают когда возможностей ORM не хватает. и/или нужно спроектировать БД с нуля и с хитрыми каскадами.  

  

типичный пример: импорт данных, которые нужны исключительно для чтения.   

да, можно для них намострячить несколько сотен моделей и загонять в них.  

а можно просто загнать их в базу, обработать в сырую, и использовать только нужные данные. вот для этого и нужно уметь в запросы. 

 Ни любой бэкенд разработчик использует фреймворки, если большая часть функционала фреймворка не нужна, а производительность очень важна, то стоит задуматься о применимости фреймворка. Конечно, тут можно использовать микрофреймворки, а не писать свой функционал, но это другой вопрос. Что касается ORM, то даже если вы ими пользуетесь, вы должны понимать как они работают, ну и разумеется понимать как работают СУБД. Для отдельного класса задач ORM может и хватать, но те же индексы, если даже ORM их создает, в принципе не могут быть всегда оптимальными, т.к. ORM не может угадать будущую селективность полей. Опять же миграции, не понимая как работает тот или иной запрос SQL DDL (да и DML тоже), вы легко положите СУБД. Если миграция выполняется несколько часов, а вы ее запустите на СУБД без снятия нагрузки - будет весело. А снимать нагрузку каждый раз - это дорогое удовольствие. И это только часть проблем, которые могут возникнуть, если не понимать как работают СУБД. 

 Чтобы не остаться в вечных джунах с узкой специализацией. Наступит момент когда автогенереный запрос будет работать медленно или он будет сжирать кучу памяти в нагруженном месте. Не звать же каждый раз старшего разработчика в такие моменты. 

 Ну удачи написать что-то сложнее {model}.objects.filter(параметры) без умения писать прямые sql запросы