使用sqlalchemy的queryfrom_statement()方法时如何选择*?

a14dhokn  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(277)

我正在使用from\ u statement()函数执行复杂的查询,这些查询需要多个子表,除了一件事之外,就是必须在query()调用中指定列名。
e、 g.如果要从下面的伪查询中获取列a和b

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

然后必须在查询()中指定a和b

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

当你想从你的查询中得到超过5列的数据时,这会让人恼火。
有没有什么方法可以让sqlalchemy返回它从查询中得到的任何结果?我试过了 query('*') 或者只是 query() 但两者都不起作用。

uwopmtnx

uwopmtnx1#

我想最简单的方法就是 execute() :

session.execute(above_statement).fetchall()

如果你还想用 query() ,则可以将所有列放入一个列表中,然后将它们解包:

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

相关问题