
Привет! Меня зовут Алексей‚ и я разработчик‚ работающий с FastAPI. Рад поделиться своим опытом и рассказать‚ как написать код без использования SQL запросов для приложения FastAPI с подключением к базе данных PostgreSQL.Прежде всего‚ мы должны создать модели ″Сотрудник″ и ″Задача″. Мы можем это сделать с помощью библиотеки Pydantic‚ которая предоставляет возможность создания схем с валидацией для наших моделей. Давайте посмотрим‚ как это делается⁚
python
from pydantic import BaseModel
class Employee(BaseModel)⁚
name⁚ str
department⁚ str
class Task(BaseModel)⁚
name⁚ str
description⁚ str
employee_id⁚ int None
В модели ″Задача″ мы использовали поле ″employee_id″‚ которое будет хранить идентификатор сотрудника‚ связанного с задачей.Затем мы подключаемся к базе данных PostgreSQL. Для этого мы можем использовать библиотеку SQLAlchemy‚ которая предоставляет ORM (объектно-реляционное отображение) для работы с базами данных в Python. Вот как это делается⁚
python
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base‚ sessionmaker
DATABASE_URL ″postgresql://username:password@localhost/database_name»
engine create_engine(DATABASE_URL)
SessionLocal sessionmaker(autocommitFalse‚ autoflushFalse‚ bindengine)
Base declarative_base
Мы создали переменную `DATABASE_URL`‚ в которой указываем данные для подключения к базе данных PostgreSQL. Затем создаем объект `engine`‚ который будет использоваться для установления соединения с базой данных. Мы также определяем класс `SessionLocal`‚ который будет использоваться для создания сессий работы с базой данных.Теперь мы можем создать таблицы ″сотрудники″ и ″задачи″‚ если они еще не существуют в базе данных. Для этого добавим следующий код⁚
python
Base.metadata.create_all(bindengine)
Теперь‚ когда у нас есть модели и подключение к базе данных‚ давайте напишем эндпоинт для создания сотрудника и задачи в базе данных. Мы будем использовать FastAPI для создания нашего веб-приложения и связи с базой данных.
python
from fastapi import FastAPI‚ Depends
from sqlalchemy.orm import Session
app FastAPI
def get_db⁚
db SessionLocal
try⁚
yield db
finally⁚
db.close
@app.post(″/employees»)
def create_employee(employee⁚ Employee‚ db⁚ Session Depends(get_db))⁚
db_employee Employee(nameemployee.name‚ departmentemployee.department)
db.add(db_employee)
db.commit
db.refresh(db_employee)
return db_employee
@app.post(″/tasks»)
def create_task(task⁚ Task‚ db⁚ Session Depends(get_db))⁚
db_task Task(nametask.name‚ descriptiontask.description‚ employee_idtask.employee_id)
db.add(db_task)
db.commit
db.refresh(db_task)
return db_task
В этих эндпоинтах мы используем сессию базы данных `db`‚ переданную в качестве зависимости. Затем мы создаем объекты моделей `Employee` и `Task` на основе данных‚ полученных из запроса. Мы добавляем их в сессию базы данных‚ сохраняем изменения и обновляем объекты для получения данных после сохранения.
Обратите внимание‚ что мы не написали ни одного SQL запроса! Вместо этого мы использовали ORM и сессии базы данных SQLAlchemy для взаимодействия с базой данных.
Надеюсь‚ эта статья помогла вам узнать‚ как написать код без использования SQL запросов для приложения FastAPI с подключением к базе данных PostgreSQL. Удачи в разработке!