0

我在 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)

Magazines 包含杂志的名称,issues 包含每个杂志的问题。这些是周刊,因此该date领域Issue是发行日。

我正在尝试建立一个查询来选择在特定日期没有问题的所有杂志。最简单的方法是什么?

4

1 回答 1

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或者?......无论您的语言的参数占位符是什么。

顺便说一句,"date"对于一列来说,这是一个糟糕的名称。它必须在任何地方都用双引号引起来,因为它是一个类型名和一个 SQL 保留字。

于 2012-10-31T12:48:12.833 回答