我如何在SQL Alchemy中表达这个查询

1 投票
1 回答
1128 浏览
提问于 2025-04-19 22:14

我正在尝试查询一个已经存在的sqlite数据库中的表格。首先,我需要根据用户输入来筛选数据:

query(Data.num == input)

接着,我想在这个筛选后的数据中找到另一个字段:日期的最大值和最小值。

我试过使用func.min和func.max,还有union,但出现了错误,提示说列不匹配。这里的问题之一是func.min和func.max需要作为查询的参数使用,而不是用来过滤数据。

ids = session.query(Data).filter(Data.num == input)
q = session.query(func.max(Data.date),
        func.min(Data.date))
ids.union(q).all()

ArgumentError: All selectables passed to CompoundSelect must have identical numbers of columns; select #1 has 12 columns, select #2 has 2

同样,如果我分别使用func.max和min,错误提示说#2只有1列。

我觉得看看这个SQL查询可能会有帮助。

谢谢

1 个回答

0

下面这个解决方案是可行的。你首先需要设置查询条件,然后再对数据进行筛选。

        query = session.query(Data.num, func.min(Data.date),
            func.max(Data.date), Data.date)
        query = query.filter(Data.num == input)
        query = query.all()

撰写回答