删除不存在的记录应在sqlalchemy中引发错误

2024-09-27 09:31:00 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么删除不存在的记录不会在sqlalchemy中引发错误。 没有关于记录是否被删除的反馈。在

session.query(Element).filter(Element.id==ElementId).delete()

谢谢你的澄清。在


Tags: idsqlalchemysession错误记录elementfilterquery
2条回答

实际上,sqlalchemy delete操作返回受影响的行数。所以您可以检查,如果受影响的行是0,则可以引发错误。在

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

这对我有用。在

我不认为这是个错误。例如,发出查询以删除sql中“不存在”的记录是完全合法的

如果我有一个表'posts'和列'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用一个标准指出^{}

Returns the number of rows deleted, excluding any cascades.

这是查看是否删除了任何行的另一个选项

相关问题 更多 >

    热门问题