我有两个课:问题和答案。一个问题可能有0个或多个答案。
class Question(Base):
__tablename__ = "questions"
answers = relationship('Answer', backref='question',
primaryjoin="Question.id==Answer.question_id")
class Answer(Base):
__tablename__ = "answers"
现在我想找到所有问题都没有答案,该怎么做?
我试过了:
Session.query(Question).filter('count(Question.answers)==0').all()
这是不正确的。什么是正确的?
答案 0 :(得分:3)
只需使用
session.query(Question).filter(Question.answers == None).all()
基本上是NULL
支票(common filter operators)。
以下是一个要点:http://gist.github.com/560473
该查询生成以下SQL:
SELECT questions.id AS questions_id
FROM questions
WHERE NOT (EXISTS (SELECT 1
FROM answers
WHERE questions.id = answers.question_id))
答案 1 :(得分:0)
我解决了问题,使用not exist
:
Session.query(Question).filter(not_(exists().where(Answer.question_id==Question.id))).all()