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、SQLAlchemy が使用するものではなく、適切な SQL で問題ないと思います。とにかくこれは、SQLAlchemy で同じことを表現する方法についてのヒントになるはずです。

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

$1日付パラメータです。%sPython では、言語のパラメーター プレースホルダーが何であれ、または?...である可能性があります。

ところで、"date"列のひどい名前です。これは型名であり、SQL の予約語であるため、どこでも二重引用符で囲む必要があります。

于 2012-10-31T12:48:12.833 に答える