Взаимодействие с базами данных очень важно для того, чтобы стать крутым разработчиком. Независимо от того, хотите ли вы быть разработчиком интерфейса, бэкенда или полного стека, вы столкнетесь с базами данных, потому что большинство динамических приложений сильно зависят от пользовательских данных. И вы не хотите быть тем парнем, который удаляет таблицу приложений в первый же день.
База данных представляет собой организованный набор структурированной информации, обычно хранящейся в электронном виде в компьютерной системе. База данных бесполезна, если вы не можете предоставлять, извлекать, обновлять или удалять данные для улучшения работы пользователя с приложением. Вот где появляется SQL (вы произносите это как SEQUEL или ESS-CUE-EL;)?) Это язык программирования, созданный Рэймондом Бойсом и Дональдом Чемберлином в 70-х (да, он такой старый!) для запросов, манипулирования , определяют и обеспечивают контроль доступа, используемый почти во всех реляционных базах данных и по сей день. В некоторых случаях SQL действует как посредник между вашим API и вашей базой данных. API сообщает SQL действия, которые он хочет выполнить, затем он обращается к базе данных для выполнения этих действий и возвращает их в API.
Однако SQL имеет свои недостатки. Одной из основных причин, по которой я не решался изучать язык программирования, был плохой интерфейс, несмотря на то, насколько простым он оказался. Есть также много недостатков безопасности, которым он подвержен из-за того, насколько низка абстракция. Неопытный программист SQL может легко стать жертвой SQL-инъекций. Уязвимость веб-безопасности позволяет злоумышленнику вмешиваться в запросы приложения к базе данных, что часто происходит при передаче параметров в базу данных. Поэтому вам нужно быть опытным и хорошо осведомленным об этих уязвимостях.
Именно здесь на помощь приходит ORM — инструмент, который позволяет вам запрашивать и манипулировать данными из базы данных с помощью объектно-ориентированного программирования. Это инкапсулирует код, необходимый для управления данными, поэтому вам больше не нужно писать SQL. ORM (SQLAlchemy) генерирует операторы SQL, а затем драйвер базы данных (pyscopg2) отправляет операторы SQL в базу данных. ORM в значительной степени зависит от драйвера базы данных для отправки данных в базу данных. Это более удобный вариант для людей, которым не нравится SQL, потому что теперь вы можете манипулировать данными и определять таблицы с помощью объектов Python (или любого другого языка ООП).
ORM стали популярным вариантом для большинства людей, поскольку они внутренне интегрированы в некоторые веб-фреймворки (Django). Это мощные инструменты, потому что они абстрагируют большинство сложных частей взаимодействия с БД, что снижает количество атак на безопасность, и вам не нужно писать плохо структурированный SQL. Но высокий уровень абстракции имеет свои недостатки, потому что у вас будет меньше контроля, а ORM не являются легкими инструментами, поэтому требуется колоссальный удар по приросту производительности, что является недостатком, если вы планируете масштабировать свой проект.
Выбор между использованием ORM или Raw SQL не так очевиден, как вы думаете, и зависит от ряда факторов: от того, что вам удобно, от масштаба приложения, которое вы создаете, от того, какой уровень контроля вы хотите над своим приложением. и многие другие. Я надеюсь, что вы нашли эту статью полезной и удачного кодирования ;).