【问题标题】:How to perform date_trunc query in Postgres using SQLAlchemy如何使用 SQLAlchemy 在 Postgres 中执行 date_trunc 查询
【发布时间】:2019-03-27 21:49:11
【问题描述】:

我似乎无法将以下查询转换为 SQLAlchemy。

我想翻译以下查询:

SELECT date_trunc('day', time), "PositionReport".callsign FROM tvh_aircraft."PositionReport" WHERE "PositionReport".reg = 'PH-BVA'
GROUP BY 1, "PositionReport".callsign

我尝试了以下方法,但没有运气。

flight_days = session\
        .query(PositionReport)\
        .filter(PositionReport.reg == reg) \
        .group_by(func.date_trunc('day', PositionReport.time))\
        .group_by('1')\
        .all()

    trunc_date = func.date_trunc('day', PositionReport.time)
    flight_days = session.query(trunc_date, PositionReport.callsign) \
        .filter(PositionReport.reg == reg) \
        .group_by("date_trunc_1")

提前感谢您的帮助。

【问题讨论】:

  • 嗨,你能发布一些数据示例和所需的输出吗?

标签: python sql postgresql sqlalchemy


【解决方案1】:
session.query(func.date_trunc('day', PositionReport.time), 
              PositionReport.callsign) \
    .filter(PositionReport.reg=='PH-BVA') \
    .group_by(func.date_trunc('day', PositionReport.time),
              PositionReport.callsign).all()

或者如果你需要GROUP BY 1

from sqlalchemy import text

session.query(func.date_trunc('day', PositionReport.time), 
              PositionReport.callsign) \
    .filter(PositionReport.reg=='PH-BVA') \
    .group_by(text('1'),
              PositionReport.callsign).all()

【讨论】:

  • 谢谢。确实有效。对于阅读本文的其他人,只需将 .all() 添加到查询中以使其完整。
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 2016-11-04
  • 2015-07-22
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
相关资源
最近更新 更多