如何在SQLAlchemy中表达此查询

时间:2014-09-04 22:31:46

标签: python sql sqlite sqlalchemy

我正在尝试查询现有sqlite数据库中的表。首先必须从用户输入中对数据进行子集化:

query(Data.num == input)

然后我想在此子集中找到另一个字段的最大值和最小值:日期

我尝试过使用func.min / max以及union,但是收到错误说列不匹配。其中一个问题是func.min / 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 :(得分: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()
相关问题