2013-02-20 98 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