为什么删除不存在的记录不会在 sqlalchemy 中引发错误。没有关于记录是否被删除的反馈。
session.query(Element).filter(Element.id==ElementId).delete()
Run Code Online (Sandbox Code Playgroud)
谢谢你的澄清。
我不认为这是一个错误。例如,发出查询以删除 sql 中“不存在”的记录是完全合法的
如果我有一个带有“id”列的“posts”表。没有记录
DELETE FROM posts WHERE ID > 0;
这是完全有效的sql,没有错误,即使没有行
我对 sqlalchmey 不太熟悉,但您能先检查一下值是否存在吗?
element = session.query(Element).filter(Element.id==ElementId).first()
if element:
# delete element
else:
# raise exception
Run Code Online (Sandbox Code Playgroud)
虽然上面会发出一个额外的查询......
此外,如果您想要一个delete引发错误的方法,您可以创建自己的会话类
更改 SQLAlchemy 的 Session.delete() 行为
并覆盖delete
返回删除的行数,不包括任何级联。
这是查看是否删除任何行的另一种选择