Использование предложения NOT EXISTS в запросе ORM sqlalchemy

Я хочу преобразовать следующий необработанный SQL-запрос в запрос ORM sqlalchemy:

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)) 

Кто-нибудь может помочь? заранее спасибо

One Solution collect form web for “Использование предложения NOT EXISTS в запросе ORM sqlalchemy”

kw_id здесь кажется скалярным значением столбца, поэтому вы не можете вызвать any() на нем – any() доступен только из атрибута bound () . Поскольку я не вижу одного из них здесь, вы можете напрямую вызвать функцию exist () :

 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 ) ) ) 
  • Избегание кода обработки сеанса шаблона в функциях sqlalchemy
  • sqlalchemy: почему я не могу обновить func.now (), но могу использовать 'now ()'?
  • Существует ли эквивалент SQLAlchemy django-evolution?
  • Фильтр отношений SQLAlchemy?
  • Выполнить SQL-запрос с помощью Elixir
  • как ограничить / компенсировать результат отношения sqlalchemy orm?
  • SQLAlchemy: объединение данных таблицы с помощью внешних ключей
  • Почему мой scoped_session создает объект AttributeError: «Session» не имеет атрибута «удалить»,
  • Python - лучший язык программирования в мире.