SQL Alchemy - 如何从模型实例中删除?

Gre*_*reg 13 python orm sqlalchemy

假设我得到这样的模型实例:

instance = session.query(MyModel).filter_by(id=1).first()
Run Code Online (Sandbox Code Playgroud)

我该如何删除该行?有特殊的方法可以打电话吗?

Gre*_*reg 26

好的我在进一步搜索后发现它:

session.delete(instance)
Run Code Online (Sandbox Code Playgroud)

  • 我不知道这个问题背后的原始用例,但无论如何,使用 id 删除本身并不是“更好”或“更直接”。这只是完成工作的几种选择之一。-- 如果我已经有一个实例,因为我出于其他原因必须使用它,那么使用 `session.delete(instance)` 显然比 `session.query(InstanceModel).filter_by(a=instance) 更直接.a, ...).delete()`(典型关系模型)。 (3认同)
  • 我认为如果您通过ID删除它会更好:MyModel.query.filter(MyModel.id == 123).delete()更直接。参见/sf/ask/1901100141/ (2认同)

ana*_*thi 7

您可以为此触发一个查询。

对于所有记录

session.query(MyModel).delete()
session.commit()
Run Code Online (Sandbox Code Playgroud)

It will delete all records from it and if you want to delete specific records then try filter clause in the query. ex.

For specific value

session.query(MyModel).filter(MyModel.id==1).delete()
session.commit()
Run Code Online (Sandbox Code Playgroud)