簡體   English   中英

FastAPI & GINO 無法從數據庫中的表中獲取所有行

[英]FastAPI & GINO can't get all rows from table in db

我陷入了 GINO 的問題。 我可以從稱為模板的表中獲取一行,因此在另一條路線中,我想從表中獲取所有行。 在這里,您可以看到我從 db ant 獲取一條記錄的觀點,它運行良好。

@router.get("/templates/{uid}")
async def get_template(uid: str):
    temp = await Template.get_or_404(uid)
    return temp.to_dict()

接下來,您可以查看我的視圖以將記錄添加到數據庫,它也可以正常工作:

@router.post("/templates")
async def add_template(template: TemplateModel):
    rv = await Template.create(name=template.name, text=template.text)
    return rv.to_dict()

所以,這個觀點的主要原因,它不起作用:

@router.get("/templates/all")
async def get_all_templates():
    temp = await Template.all()
    return temp.to_dict()

在下面查看我的模板 model:

class Template(db.Model):
    __tablename__ = "templates"

    UUID = db.Column(
        str(UUID(as_uuid=True)),
        db.String,
        primary_key=True,
        default=str(uuid.uuid4()),
        unique=True,
        nullable=False,
    )
    name = db.Column("name", db.String, nullable=False)
    text = db.Column("text", db.String, nullable=False)
    created_at = db.Column("created_at", db.DateTime, nullable=False,
                           server_default=db.func.now())

最后是我的 db GINO 引擎:

from gino_starlette import Gino
from .. import config

db = Gino(
    dsn=config.DB_DSN,
    pool_min_size=config.DB_POOL_MIN_SIZE,
    pool_max_size=config.DB_POOL_MAX_SIZE,
    echo=config.DB_ECHO,
)

錯誤日志:

2020-08-08 12:07:57,698 INFO gino.engine._SAEngine SELECT templates."UUID", templates.name, templates.text, templates.created_at

FROM templates

WHERE templates."UUID" = $1

2020-08-08 12:07:57,699 INFO gino.engine._SAEngine ('all',)

INFO: 172.23.0.1:40676 - "GET /templates/all HTTP/1.1" 404 Not Found

請告訴我出了什么問題,我花了很多時間來解決這個問題。 歡迎回答,謝謝。

但是我不知道。 並且 GINO 文檔並沒有說明使用 GINO 模型對 db 進行的操作(例如從 db 獲取所有記錄)應該在 POST 中請求。 所以正確的答案是將router.get替換為router.post:

@router.post("/templates/all")
async def get_all_templates():
    temp = await Template.all()
    return temp.to_dict()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM