Sum*_*aye 14 python sqlalchemy
我想将以下原始sql查询转换为sqlalchemy ORM查询:
SELECT * FROM kwviolations AS kwviol WHERE kwviol.proj_id=1 AND NOT EXISTS (SELECT * FROM
kwmethodmetrics AS kwmetrics WHERE kwmetrics.kw_id=kwviol.kw_id AND kwmetrics.checkpoint_id=5);
Run Code Online (Sandbox Code Playgroud)
我尝试了以下ORM查询但没有成功:
self.session.query(KWViolations).filter(KWViolations.proj_id==project.id).\
filter(and_(~KWViolations.kw_id.any(KWMethodMetrics.kw_id==KWViolations.kw_id),KWMethodMetrics.checkpoint_id==checkpoint.id))
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?提前致谢
zzz*_*eek 20
kw_id这里似乎是一个标量列值,所以你不能调用any()它 - any()只能从一个relationship()绑定属性中获得.由于我在这里没有看到其中一个,你可以直接调用exists():
from sqlalchemy import exists
session.query(KWViolations).filter(KWViolations.proj_id == project.id).\
filter(
~exists().where(
and_(
KWMethodMetrics.kw_id == KWViolations.kw_id,
KWMethodMetrics.checkpoint_id == checkpoint.id
)
)
)
Run Code Online (Sandbox Code Playgroud)