Подробно про SQLAlchemy
SQLAlchemy — это программная библиотека на языке Python для работы с реляционными СУБД с применением технологии ORM. Служит для синхронизации объектов Python и записей реляционной базы данных. SQLAlchemy позволяет описывать структуры баз данных и способы взаимодействия с ними на языке Python без использования SQL. Библиотека была выпущена в феврале 2006 под лицензией открытого ПО MIT.
Простыми словами SQLAlchemy — это библиотека для напсиания запросов на языке Python без необходимости использовать язык SQL напрямую, хотя такая возможность также имеется. По аналогии он похож на пакет Doctrine в php, если вы сталкивались с написанием запросов в Laravel, то вам легче это будет поянть.
Фишка ORM в том, что это он позволяет нам ассоциировать классы и свойства с таблицами и полями в БД, позволяя нам легко манипулировать данными не выходя за пределами языка Python, а еще делать это на кроссбазовом уровне, т.е. нам нет необходимости учитывать ньюансы языка SQL для разных БД, SQLAlchemy об этом разберется сам.
Основные возможности библиотеки SQLAlchemy:
- Использование ORM не является обязательным
- Устоявшаяся архитектура
- Возможность использовать SQL, написанный вручную
- Поддержка транзакций
- Создание запросов с использованием функций и выражений Python
- Модульность и расширяемость
- Дополнительная возможность раздельного определения объектного отображения и классов
- Поддержка составных индексов
- Поддержка отношений между классами, в том числе «один-ко-многим» и «многие-ко-многим»
- Поддержка ссылающихся на себя объектов
- Предварительная и последующая обработка данных (параметров запроса, результата)
- и другие.
Подробно про Alembic
Alembic — это инструмент миграции базы данных, написанный автором SQLAlchemy. Инструмент миграции предлагает следующие функции:
- Может отправлять операторы ALTER в базу данных, чтобы изменить структуру таблиц и других конструкций.
- Предоставляет систему, с помощью которой можно создавать «сценарии миграции»; каждый сценарий указывает конкретную серию шагов, которые могут «обновить» целевую базу данных до новой версии, и, необязательно, ряд шагов, которые могут «понизить» аналогичным образом, выполняя те же шаги в обратном порядке.
- Позволяет сценариям выполняться в некоторой последовательности.
Подробно про SQLModel
SQLModel — библиотека для взаимодействия с базами данных SQL из кода Python, с объектами Python. Основанный на аннотациях типов Python, он по сути представляет собой оболочку поверх pydantic и SQLAlchemy , что упрощает работу с ними обоими.
SQLModel — это библиотека для взаимодействия с базами данных SQL из кода Python с объектами Python. Он разработан, чтобы быть интуитивно понятным, простым в использовании, хорошо совместимым и надежным.
SQLModel основан на аннотациях типов Python и работает на Pydantic и SQLAlchemy.
Ключевые особенности:
- Интуитивное написание : отличная поддержка разработчика. Меньше времени на отладку. Разработан, чтобы быть простым в использовании и изучении. Меньше времени на чтение документов.
- Простота в использовании : он имеет разумные значения по умолчанию и выполняет большую работу по упрощению кода, который вы пишете.
- Совместимость : разработан для совместимости с FastAPI , Pydantic и SQLAlchemy.
- Расширяемость : у вас есть все возможности SQLAlchemy и Pydantic.
- Коротко : сведите к минимуму дублирование кода. Аннотации одного типа делают много работы. Нет необходимости дублировать модели в SQLAlchemy и Pydantic.