
- •1. Настройка SQLModel
- •1.1.Таблицы
- •1.2. Строки
- •1.3. Сессии
- •2. Создание базы данных
- •2.1. Создание событий
- •2.2 Чтение событий
- •2.3. Обновление событий
- •2.4. Удаление событий
- •2. Настройка MongoDB
- •2.1. Документ
- •2.3. Инициализация базы данных
- •CRUD операции
- •Создать
- •Читать
- •Обновить
- •Удалить
- •routes/events.py
- •routes/users.py
- •Выводы
- •Задания

Лабораторная работа №3. Подключение к базе данных
В предыдущих работах были рассмотрены темы структуризации приложения FastAPI, реализации некоторых маршрутов и моделей приложения, а также протестированы конечные точки.
Однако приложение по-прежнему использует внутреннюю базу данных для хранения событий. Необходимо модифицировать приложение для использования правильной базы данных.
Базу данных можно просто назвать хранилищем данных. В этом контексте база данных позволяет нам хранить данные постоянно, в отличие от встроенной в приложение базы данных, которая стирается при любом перезапуске или сбое приложения. База данных — это таблица, содержащая столбцы, называемые
полями, и строки, называемые записями.
Цель работы - овладеть умениями и навыками подключения приложение FastAPI к базе данных. Рассматривается подключение к базе данных SQL с использованием SQLModel и базе данных MongoDB с помощью Beanie.
Решаемые задачи:
•Настройка SQLModel
•CRUD операции в базе данных SQL с использованием SQLModel
•Настройка MongoDB
•CRUD операции в MongoDB с помощью Beanie
1. Настройка SQLModel
Первым шагом для интеграции базы данных SQL в приложение планировщика является установка библиотеки SQLModel. Библиотека SQLModel была создана создателем FastAPI и поддерживается Pydantic и SQLAlchemy. Поддержка Pydantic упростит нам определение моделей, изученных ранее.
Поскольку мы будем реализовывать базы данных SQL и NoSQL, мы создадим новую ветку GitHub для этого раздела. В своем терминале перейдите в каталог проекта, инициализируйте репозиторий GitHub и зафиксируйте существующие файлы:
$ git init
$ git add database models routes main.py
$ git commit -m "Committing bare application without a database"
Далее создайте новую ветку:
$
git
checkout
-b
planner-sql
Теперь мы готовы настроить SQLModel в нашем приложении. В терминале активируйте виртуальную среду и установите библиотеку SQLModel:
$ source venv/bin/activate
(venv)$ pip install sqlmodel
Прежде чем углубиться в добавление базы данных в наше приложение планировщика, давайте рассмотрим некоторые из методов, содержащихся в SQLModel, которые мы будем использовать в этой работе.
1.1.Таблицы
Таблица — это, по сути, объект, который содержит данные, хранящиеся в базе данных — например, данные о событиях будут храниться в таблице событий. Таблица будет состоять из столбцов и строк, где в конечном итоге будут храниться данные.

Чтобы создать таблицу с помощью SQLModel, сначала определяется класс модели таблицы. Как и в моделях Pydantic, таблица определяется, но на этот раз как подклассы класса SQLModel. Определение класса также принимает другую переменную конфигурации, таблицу, чтобы указать, что этот класс является таблицей SQLModel.
Переменные, определенные в классе, будут представлять столбцы по умолчанию, если они не
обозначены как поля. Давайте посмотрим, как будет определена таблица событий: class Event(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
title: str image: str description: str location: str tags: List[str]
В этом классе таблицы все определенные переменные являются столбцами, кроме id, который был определен как поле. Поля обозначаются с помощью объекта Field из библиотеки SQLModel. Поле id также является первичным ключом в таблице базы данных.
Что такое первичный ключ?
Первичный ключ — это уникальный идентификатор записи, содержащейся в таблице базы данных.
Теперь, когда мы узнали, что такое таблицы и как их создавать, давайте рассмотрим строки в
следующем разделе.
1.2. Строки
Данные, отправляемые в таблицу базы данных, хранятся в строках под указанными столбцами. Чтобы вставить данные в строки и сохранить их, создается экземпляр таблицы, а переменные заполняются нужными входными данными. Например, чтобы вставить данные о событии в таблицу событий, мы сначала создадим экземпляр модели:
new_event = Event(title="Book Launch", image="src/fastapi.png",
description="The book launch event will be held at Packt HQ, Packt city",
location="Google Meet", tags=["packt", "book"])
Далее мы создаем транзакцию базы данных, используя класс Session:
with Session(engine) as session: session.add(new_event) session.commit()
Предыдущая операция может показаться вам чуждой. Давайте посмотрим, что такое класс Session и что он делает.
1.3. Сессии
Объект сеанса обрабатывает взаимодействие кода с базой данных. Он в первую очередь выступает в качестве посредника при выполнении операций. Класс Session принимает аргумент, который является экземпляром механизма SQL.
Теперь, когда известно, как создаются таблицы и строки, рассмотрим, как создается база данных. Некоторые из методов класса session, которые будут использоваться в этой работе, включают следующие: