【问题标题】:sqlalchemy query with condition on child relationship具有子关系条件的 sqlalchemy 查询
【发布时间】:2012-10-31 10:25:55
【问题描述】:

我在 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 包含每个杂志的期号。这些是周刊,所以Issue 中的date 字段是发行日期。

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

【问题讨论】:

    标签: python sql postgresql sqlalchemy flask-sqlalchemy


    【解决方案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 保留字。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    相关资源
    最近更新 更多