sqlalchemy查询条件与子关系

时间:2012-10-31 10:25:56

标签: python sql postgresql sqlalchemy flask-sqlalchemy

我在sqlalchemy中有以下模型:

class Magazine(db.Model):

    id= db.Column(db.Integer, primary_key=True)
    name= db.Column(db.String(50))
    issues= db.relationship('Issue', backref='magazine', lazy='dynamic')

class Issue(db.Model):
    id= db.Column(db.Integer, primary_key=True)
    magazine_id= db.Column(db.Integer, db.ForeignKey('magazine.id'))
    date= db.Column(db.Date)

杂志上有杂志的名称,问题涉及每本杂志的问题。这些是每周杂志,因此date中的Issue字段是问题的发生日。

我尝试构建一个查询,以选择所有在特定日期没有问题的杂志。这是最简单的方法吗?

1 个答案:

答案 0 :(得分:1)

由于这是标记sql,我认为你可以使用正确的SQL,而不是SQLAlchemy使用的。这应该是关于如何在SQLAlchemy中表达相同内容的提示。

SELECT *
FROM magazine m
WHERE NOT EXISTS (
  SELECT 1 FROM issue i WHERE i.magazine_id = m.id AND i."date" = $1
);

$1是日期参数;在Python中它可能是%s? ...无论你的语言参数占位符是什么。

BTW,"date"是列的可怕名称。它必须是双引号,因为它是一个typename和一个SQL保留字。