如何在sqlalchemy中选择没有答案的问题

时间:2010-09-01 09:14:13

标签: python sqlalchemy

我有两个课:问题和答案。一个问题可能有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()

这是不正确的。什么是正确的?

2 个答案:

答案 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()