使用数据库包执行函数获取整行

Get whole row using database package execute function

我在我的 fastapi 应用程序中使用 databases 包。 数据库有执行和获取函数,当我尝试使用执行插入或更新后return列值时,它return只有第一个值,如何获得不使用 fetch 的所有值..

这是我的查询

INSERT INTO table (col1, col2, col3, col4) VALUES ( val1, val2, val3, val4 ) RETURNING col1, col2;

您可以使用参数为 offset = 0 和 limit = None 的查询方法来获取所有列

 db.query({YOUR TABLE OBJECT}).offset(0).limit(None).all()

你可以参考这个link了解更多: https://fastapi.tiangolo.com/tutorial/sql-databases/

如果你正在使用 mypy 那么你必须告诉解释器限制值可以是 None

from typing import Optional
limit: Optional[int] = None

INSERT INTO table (col1, col2, col3, col4) VALUES ( val1, val2, val3, val4 ) RETURNING (col1, col2);

您可以使用此查询获取所有列

我也遇到了这个问题,这是我的查询:

INSERT INTO notes (text, completed) VALUES (:text, :completed) RETURNING notes.id, notes.text, notes.completed

使用 database.execute(...) 只会 return 第一列。

但是..使用database.fetch_one(...)插入数据并return所有列。

希望这对您有所帮助