Привет! Меня зовут Алексей, и я хочу рассказать тебе о своем опыте работы с FastAPI и БД Postgres для создания таблицы ″Задачи″ с указанными полями.Для начала, давай разберемся с установкой необходимых пакетов. Установка FastAPI и asyncpg (драйвера для работы с Postgres) может быть выполнена через менеджер пакетов pip⁚
bash
pip install fastapi asyncpg
Теперь, приступим к созданию нашей таблицы в БД. Создадим новый файл `database.py`, где поместим код для подключения к БД и создания таблицы при первом запуске приложения⁚
python
import asyncpg
import asyncio
async def create_task_table⁚
conn await asyncpg.connect(user’your_username’, password’your_password’, database’your_database’)
# Замени your_username, your_password и your_database на свои данные для подключения к БД
await conn.execute(»’
CREATE TABLE IF NOT EXISTS tasks (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL٫
parent_task_id INTEGER,
status VARCHAR(20) DEFAULT ‘Важная задача’
)
»’)
await conn.close
loop asyncio.get_event_loop
loop.run_until_complete(create_task_table)
Теперь у нас есть таблица ″tasks″ с полями ″id″, ″name″, ″parent_task_id″ и ″status″. Поле ″parent_task_id″ необязательное и указывает на родительскую задачу в той же таблице.Далее, создадим файл `main.py`, где будем писать основной код для FastAPI и эндпоинт создания новой задачи⁚
python
from fastapi import FastAPI
from pydantic import BaseModel
import asyncpg
app FastAPI
class Task(BaseModel)⁚
name⁚ str
parent_task_id⁚ int None
status⁚ str ‘Важная задача’
@app.post(″/tasks»)
async def create_task(task⁚ Task)⁚
conn await asyncpg.connect(user’your_username’, password’your_password’, database’your_database’)
# Замени your_username, your_password и your_database на свои данные для подключения к БД
query »’
INSERT INTO tasks (name, parent_task_id, status)
VALUES ($1, $2, $3)
RETURNING id
»’
task_id await conn.fetchval(query, task.name, task.parent_task_id, task.status)
await conn.close
return {″task_id″⁚ task_id}
Теперь мы можем использовать FastAPI для создания эндпоинта `/tasks`, который будет принимать POST-запросы для создания новой задачи. В теле запроса необходимо указать JSON-объект с полями ″name″, ″parent_task_id″ и ″status″.Например, чтобы создать новую задачу с именем ″Подготовить отчет″, выполним POST-запрос на `http://localhost:8000/tasks` со следующим телом запроса⁚
json
{
″name″⁚ ″Подготовить отчет″
}
При успешном выполнении запроса, мы получим ответ в формате JSON, содержащий ID созданной задачи⁚
json
{
″task_id″⁚ 1
}
Таким образом, мы успешно создали таблицу ″Задачи″ в БД Postgres, а также настроили FastAPI для создания новых задач с помощью эндпоинта `/tasks`. Удачи в твоих проектах с FastAPI и Postgres!