Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР№3_Подключение к базе данных.pdf
Скачиваний:
1
Добавлен:
07.07.2024
Размер:
664.74 Кб
Скачать

Лабораторная работа №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"

Далее создайте новую ветку:

$gitcheckout-bplanner-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, которые будут использоваться в этой работе, включают следующие:

Соседние файлы в предмете Теория принятия решений