2013-02-20 95 views

回答

4

我不認爲這是一個錯誤。例如,發出一個查詢來刪除sql中「不存在」的記錄是完全合法的

如果我有一個'帖子'與'id'列。沒有記錄

DELETE FROM posts WHERE ID > 0;

這是完全有效的SQL,沒有錯誤,即使沒有行

我不是太熟悉sqlalchmey,但你可以檢查是否值第一存在?

element = session.query(Element).filter(Element.id==ElementId).first() 
if element: 
    # delete element 
else: 
    # raise exception 

上面會發出盡管其他查詢...

另外,如果你想有一個delete方法提高你可以創建自己的會話類錯誤 Change SQLAlchemy's Session.delete() behaviour 並覆蓋delete

由於zzzeek指出delete與標準

返回刪除的行數,不包括任何級聯。

這是因爲如果任何行被刪除

+3

刪除)上看到的標準(將返回匹配的行數,這樣你就可以在該斷言另一種選擇。否則這個答案是正確的,如果你想檢查刪除身份你必須使用session.delete()。 – zzzeek 2013-02-20 17:18:50

+0

謝謝大家,我會嘗試建議的答案。 – zorro 2013-02-21 11:50:38