【问题标题】:Get whole row using database package execute function使用数据库包执行功能获取整行
【发布时间】:2020-05-06 09:29:23
【问题描述】:

我在我的 fastapi 应用程序中使用 databases 包。 databases有execute和fetch函数,当我尝试使用execute插入或更新后返回列值时,它只返回第一个值,如何在不使用fetch的情况下获取所有值..

这是我的查询

INSERT INTO 表(col1、col2、col3、col4) 值 (val1, val2, val3, val4) 返回 col1, col2;

【问题讨论】:

    标签: python database fastapi


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      您可以参考此链接了解更多信息: https://fastapi.tiangolo.com/tutorial/sql-databases/

      如果您使用的是 mypy,那么您必须告诉解释器限制值可以是无

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

      【讨论】:

      • 我正在使用原始查询并将其传递给数据库执行函数,它只返回 col1 值,..
      • 那么 col2 值呢?因此,它应该返回 col1 和 col2 INSERT INTO table (col1, col2, col3, col4) VALUES (val1, val2, val3, val4) RETURNING col1, col2;
      • 只返回 col1 值,我不知道其他列发生了什么
      • 我正在使用数据库包的执行功能,它以原始查询为参数
      • 您使用哪种数据库服务器语言,例如 PostgreSQL、MySQL 或 SQLite
      【解决方案3】:

      我也遇到了麻烦,这是我的问题:

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

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

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

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2018-06-20
        • 2021-07-27
        • 1970-01-01
        • 2022-07-06
        • 2019-12-23
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        • 1970-01-01
        相关资源
        最近更新 更多