Как добавить изображения в модели (таблицы) и сохранить их в базе данных в рамках FastAPI?Python

Программы на Python
Anonymous
Как добавить изображения в модели (таблицы) и сохранить их в базе данных в рамках FastAPI?

Сообщение Anonymous »

Имею дело с FastAPI и не могу понять, как сделать простую (с точки зрения моего опыта работы с django) вещь — добавить товар с изображением в базу данных. Как я понял, изображение должно храниться в статической папке и в базе данных должна храниться только ссылка на него.
На основе информации из официальной документации я добавил вот эту схему
schema.py
from pydantic import BaseModel, HttpUrl
from typing import Optional

class ProductImageSchema(BaseModel):
url: HttpUrl
name: str

class ProductSchema(BaseModel):
name: str
description: Optional[str] = None
image: Optional[ProductImage] = None

Я использую SQLAlchemy. Теперь мой первый вопрос: как правильно описать модель продукта.
models.py
product = Product(
"product",
metadata,
Column("id", Integer, primary_key=True),
Column("name", String(50)),
Column("description", String(50)),
Column(....str_or_url..????) # field with relation with image,
)

И непонятно, как создавать новые экземпляры объекта продукта. Что-то вроде...
crud.py
async def post(payload: ProductSchema, file: UploadFile = File(...)):
content = await file.read()
if file.content_type not in ['image/jpeg', 'image/png']:
raise HTTPException(status_code=406, detail="Only .jpeg or .png files allowed")
file_name = f'{uuid.uuid4().hex}{ext}'
async with aiofiles.open(file_name, "wb") as f:
await f.write(content)
query = product.insert().values(title=payload.name, description=payload.description, image=????????)
return await database.execute(query=query)

Вернуться в «Python»