SQLAlchemy:按成员列表中的对象过滤

时间:2018-08-29 05:22:27

标签: python sqlalchemy

请考虑以下课程,

class Person:
    id
    name
    jobs

class Job:
    name
    person
    person_id (FK)

其中Person.jobs引用类Job对象。现在,我想执行以下查询,

# for a given person p
Job.query.filter(Job.notin_(p.jobs))

SQLAlchemy 中是否可能?

请不要因为我不想写Job.query.filter(Job.person_id != p.id)

1 个答案:

答案 0 :(得分:0)

不!

作为文档about in_ explains,从SQLAlchemy的1.2版开始,您不能只有对象实例的列表:

  • ID列表
  • 空列表
  • 选择
  • 绑定参数

从1.2版开始,只有您所说的“不想要”才是正确的答案:

Job.query.filter(Job.id.notin_([j.id for j in person.jobs]))