2012-10-31 121 views
0

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

雜誌認爲雜誌和問題的名稱保存每個雜誌的問題。這些是每週雜誌,因此Issue中的date字段是問題的當天。

我嘗試建立一個查詢來選擇所有沒有針對特定日期問題的雜誌。最簡單的方法是怎麼做的?

回答

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保留字,所以無處不在。

+0

它的工作原理,謝謝。如果任何人需要sqlalchemy中WHERE NOT EXISTS語法的說明,請查看http://mynthon.net/howto/-/python/sqlalchemy-equiv-select-where-not-exists.txt – applechief