我正在尝试将此SQL查询转换为Flask-SQLAlchemy调用:
SELECT *
FROM "ENVOI"
WHERE "ID_ENVOI" IN (SELECT d."ID_ENVOI"
FROM "DECLANCHEMENT" d
WHERE d."STATUS" = 0
AND d."DATE" = (SELECT max("DECLANCHEMENT"."DATE")
FROM "DECLANCHEMENT"
WHERE "DECLANCHEMENT"."ID_ENVOI" = d."ID_ENVOI"))
如您所见,它使用子查询,最重要的部分,子查询之一是相关查询(它使用d
在外部查询中定义的表)。
我知道如何将子查询与subquery()
函数一起使用,但是我找不到与SQLAlchemy相关的查询的文档。你知道这样做的方法吗?
根据univerio的评论链接,我已经为我的请求完成了以下代码:
Declch = db.aliased(Declanchement)
maxdate_sub = db.select([db.func.max(Declanchement.date)])\
.where(Declanchement.id_envoi == Declch.id_envoi)
decs_sub = db.session.query(Declch.id_envoi)\
.filter(Declch.status == SMS_EN_ATTENTE)\
.filter(Declch.date < since)\
.filter(Declch.date == maxdate_sub).subquery()
envs = Envoi.query.filter(Envoi.id_envoi.in_(decs_sub)).all()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句