Использование предложения NOT EXISTS в запросе SQLAlchemy ORM
Я хочу преобразовать следующий необработанный 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);
я попробовал следующий запрос 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))
может кто-нибудь помочь? Заранее спасибо
1 ответов
kw_id
здесь, кажется, скалярное значение столбца, поэтому вы не можете вызвать any()
на - any()
доступно только с relationship () связанного атрибута. Поскольку я не вижу здесь никого из них, вы можете позвонить () напрямую:
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
)
)
)