Почему я получаю тип [категории] вместо категории?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему я получаю тип [категории] вместо категории?

Сообщение Anonymous »

Я играю с Fastapi/Sqlalchemy. Репозиторий работает правильно, я могу разобраться из Swagger, и все отображается в файле.

Код: Выделить всё

read_one
, update_one и delete_one ), показывает предупреждение о возвратном значении

Ожидаемый тип 'категория', Got 'type [Category]' вместо

from dataclasses import dataclass
from typing import Sequence

from sqlalchemy import select
from sqlalchemy.orm import Session

from app.models.coordinate import Category
from app.repositories.errors import DoesNotExistError, ExistError
from app.repositories.model import Repository
from app.schemas.coordinates import CategoryCreate, CategoryUpdate

@dataclass(frozen=True)
class CategorySqliteRepository(
Repository[
Category,
CategoryCreate,
CategoryUpdate,
]
):
sqlite: Session

def read_one(self, item_id: int) -> Category:
category = self.sqlite.get(Category, item_id)

if category is None:
raise DoesNotExistError(resource="category", id=str(item_id))

return category

def read_all(self, skip: int = 0, limit: int = 100) -> Sequence[Category]:
return self.sqlite.scalars(select(Category).offset(skip).limit(limit)).all()

def create_one(self, item: CategoryCreate) -> Category:
data = item.model_dump()
category = Category(**data)

existing_category = self.sqlite.scalars(
select(Category).filter(Category.name == category.name)
).all()
if existing_category:
raise ExistError(resource="category", name=category.name)

self.sqlite.add(category)
self.sqlite.commit()
self.sqlite.refresh(category)

return category

def update_one(self, item_id: int, item: CategoryUpdate) -> Category:
category = self.sqlite.get(Category, item_id)

if category is None:
raise DoesNotExistError(resource="category", id=str(item_id))

data = item.model_dump(exclude_unset=True)
existing_category = self.sqlite.scalars(
select(Category).filter(Category.name == data["name"])
).all()
if existing_category:
raise ExistError(resource="category", name=data["name"])

for key, value in data.items():
setattr(category, key, value)
self.sqlite.add(category)
self.sqlite.commit()
self.sqlite.refresh(category)

return category

def delete_one(self, item_id: int) -> Category:
category = self.sqlite.get(Category, item_id)

if category is None:
raise DoesNotExistError(resource="category", id=str(item_id))

self.sqlite.delete(category)
self.sqlite.commit()

return category

from typing import List

from sqlalchemy import ForeignKey, Integer, String
from sqlalchemy.orm import (
Mapped,
mapped_column,
relationship,
)

from app.runner.database import Base

class Category(Base):
__tablename__ = "category"

id: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String, unique=True, nullable=False)

coordinates: Mapped[List["Coordinate"]] = relationship(
back_populates="category", cascade="all, delete-orphan"
)

from pydantic import BaseModel, ConfigDict

class CategoryBase(BaseModel):
model_config = ConfigDict(from_attributes=True)

name: str

class CategoryCreate(CategoryBase):
pass

class CategoryPublic(CategoryBase):
id: int

class CategoryUpdate(BaseModel):
name: str | None = None

class CoordinatePublicWithCategory(CoordinatePublic):
model_config = ConfigDict(from_attributes=True)

category: CategoryPublic | None = None
< /code>
Я попытался искать ошибку и помощь ИИ. Не мог найти способ исправить это.

Подробнее здесь: https://stackoverflow.com/questions/797 ... f-category
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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