Использование предложения 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 - None
  • Обновите схему базы данных sqlite с sqlalchemy и elixir
  • SQLAlchemy ожидает объект, но находит таблицу
  • AttributeError при запросе: ни объект InstrumentedAttribute, ни 'Comparator' не имеют атрибута
  • Связать объекты в отношениях «многие-ко-многим» в SQLAlchemy
  • изменение в обработке импорта / модулей от python2 до python3?
  • SQLAlchemy: избегать повторения в определении класса декларативного стиля
  • Автоматически распространяющее удаление при использовании двунаправленной ассоциации_proxy
  • SQLalchemy указывает, какой индекс использовать
  • Python - лучший язык программирования в мире.