【问题标题】:How to select * when using SQLAlchemy's query from_statement() method?使用 SQLAlchemy 的查询 from_statement() 方法时如何选择 *?
【发布时间】:2020-05-22 09:20:05
【问题描述】:

我正在使用 from_statement() 函数执行需要多个子表的复杂查询,除了一件事之外,您必须在 query() 调用中指定列名。

例如如果你想从下面的伪查询中获取 A 列和 B 列

SELECT t1.colA AS A, t2.colB AS B FROM
(
    SELECT
        sth AS colA
    FROM
    (
        ...
) t1
...

那么你必须在你的 query() 中指定 A 和 B

session.query('A', 'B').from_statement(above_statement).all()

当您想从查询中获取超过 5 列时,这会很烦人。

有没有办法让 SQLAlchemy 返回它从查询中得到的任何东西? 我试过query('*') 或只是query(),但都不起作用。

【问题讨论】:

    标签: python sql sqlalchemy flask-sqlalchemy


    【解决方案1】:

    我认为最简单的方法是使用execute()

    session.execute(above_statement).fetchall()
    

    如果你仍然想使用query(),那么你可以将你所有的列放到一个列表中然后解压它们:

    cols = ['A', 'B']
    session.query(*cols).from_statement(above_statement).all()
    

    【讨论】:

    • 我也这么认为,但不幸的是,我大多数时候都需要查询对象才能不破坏事物。
    • 是的,它有效,但我仍然必须列出所有列。还是谢谢。
    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多