如何解决如何使用 fastAPI 显示来自 SqlAlchemy Query 的列表数据
所以,我一直在尝试使用 fastAPI 学习 Python 全栈 Web 开发。我的大部分网站都可以正常工作,但我无法使用 FASTAPI 发送查询列表。
我收到此错误。
{
"detail": [
{
"loc": [
"path","id"
],"msg": "value is not a valid integer","type": "type_error.integer"
}
]
}
这是我的 FastAPI 路由器代码。
@router.get("/get/all",response_model=List[ComicViewable])
def list_of_all_comics(db: Session = Depends(get_db)):
comics = comic_func.list_comics(db)
if not comics:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,detail="No Comics have been created.")
return comics
def list_comics(db: Session):
return db.query(Comic).all()
和我的 pydantic 响应类
class ComicViewable(BaseModel):
title: str
description: str
date_created: date
is_ongoing: bool
is_public: bool
class Config:
orm_mode = True
我不知道我在这里做错了什么。我已经阅读了 FASTAPI 帮助文档,在那里他们还使用 List[PydanticclassName]
返回数据库查询列表,但由于某种原因,它对我不起作用。
编辑:
所以,我检查了 list_comics()
函数的响应。它确实返回了正确的响应。我通过在 Jinja2 模板中打印 comic.title
来测试它。
{% block content %}
<div class="ui segment">
<div class="two column middle aligned grid">
{% for comic in comics %}
<h2>{{comic.title}}</h2>
{% endfor %}
</div>
</div>
{% endblock %}
因此错误似乎发生在 pydantic 类模型 或 FastAPI 路由器中。
解决方法
@MatsLindh 建议的这个解决方案解决了它。
那不是正在加载的端点;错误消息抱怨带有 id 设置的端点(即 /get/{id} 或类似的东西)。您可能在 /get/all 端点之前定义了该端点,并且由于 all 不是整数,因此会引发给定的错误。
这解决了我的问题,因为我在名为 /get/all
的 /get/{id}
端点之前有另一个端点,这导致了错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。