(2) Асинхронный SQLAlchemy 2: пошаговый гайд по управлению сессиями, добавлению и извлечению данных с Pydantic
Metadata
- Author: Хабр
- Full Title: (2) Асинхронный SQLAlchemy 2: пошаговый гайд по управлению сессиями, добавлению и извлечению данных с Pydantic
- Category:#articles
- Document Tags: outline Outline pydantic sqlalchemy
- Summary: Статья объясняет, как управлять сессиями и работать с базой данных асинхронно с помощью SQLAlchemy и Pydantic. Она рассматривает автоматизацию создания и закрытия сессий, а также методы добавления и извлечения данных. Важно освоить основные концепции, прежде чем переходить к более сложным темам.
- URL: https://habr.com/ru/companies/amvera/articles/850470/
Highlights
-
flush
в SQLAlchemy отправляет изменения в базу данных без их окончательной фиксации, то есть без выполнения коммита. Это полезно, когда нужно сгенерировать данные, такие как идентификаторы (например, user.id), чтобы использовать их до фактического сохранения данных в базе. При этом сама транзакция остаётся открытой, и окончательное сохранение происходит позже, при вызове commit. (View Highlight) -
Для массового добавления данных в SQLAlchemy существует удобный метод add_all. Он работает аналогично методу add, но принимает на вход список экземпляров (инстансов). С его помощью мы можем добавить сразу несколько записей за одну операцию. Давайте рассмотрим пример, где добавим пять пользователей с использованием этого метода. (View Highlight)
-
try: await session.commit() except SQLAlchemyError as e: await session.rollback() raise e (View Highlight)
-
После того как запрос был выполнен с помощью метода session.execute(query), SQLAlchemy возвращает объект result. Этот объект содержит строки, полученные из базы данных, но чтобы превратить их в объекты моделей или нужный формат, нужно выполнить преобразование. Для этого используются различные методы: scalars(), all(), first(), и другие. (View Highlight)
-
Мы знаем, что сейчас должна автоматически подгрузится информация по профилям пользователей, ведь мы в прошлый раз указывали в описании модели «lazy=»joined»», а я гарантировал, что информация подтянется автоматически. (View Highlight)
-
Описания полей достаточно понятны, а что заслуживает внимание так это model_config (переменная, в которой прописываются конфигурации конкретной модели). Разберемся с атрибутами и значениями. • from_attributes = True: это позволяет модели автоматически маппить атрибуты Python объектов на поля модели. Примерно то что мы делали в методе to_dict, но более расширенно. (View Highlight)
-
Метод from_orm в Pydantic используется для создания экземпляра Pydantic модели на основе объекта ORM. Этот метод автоматически преобразует данные из ORM объекта в Pydantic модель, что позволяет легко работать с данными, извлеченными из базы данных через ORM (например, SQLAlchemy). (View Highlight)
-
Подгрузка данных в SQLAlchemy SQLAlchemy предоставляет два основных подхода для подгрузки данных из связанных таблиц:
- Подгрузка через
join
(явный JOIN в запросе). - Подгрузка через
options
(гибкая загрузка с использованием стратегий). (View Highlight)
- Подгрузка через
📂 Articles | Последнее изменение: 10.12.2024 14:19