【问题标题】:SQL Alchemy - How to Delete from a model instance?SQL Alchemy - 如何从模型实例中删除?
【发布时间】:2011-03-20 08:05:27
【问题描述】:

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

instance = session.query(MyModel).filter_by(id=1).first()

如何删除该行?有什么特殊的方法可以调用吗?

【问题讨论】:

标签: python sqlalchemy orm


【解决方案1】:

好的,我在进一步搜索后找到了它:

session.delete(instance)

【讨论】:

  • 我觉得这样按id删除会更好: MyModel.query.filter(MyModel.id == 123).delete() 更直接。见stackoverflow.com/questions/27158573/…
  • 我不知道这个问题背后的原始用例,但无论如何,使用 id 删除本身并不是“更好”或“更直接”。这只是完成工作的几种选择之一。 -- 如果我已经有一个实例,因为其他原因不得不使用它,那么使用session.delete(instance) 显然比使用session.query(InstanceModel).filter_by(a=instance.a, ...).delete() 更直接(典型的关系模型)。
【解决方案2】:

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

所有记录

session.query(MyModel).delete()
session.commit()

它会删除所有 从中记录,如果您想删除特定记录,请尝试 查询中的过滤子句。例如。

具体数值

session.query(MyModel).filter(MyModel.id==1).delete()
session.commit()

【讨论】:

  • 我收到sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped entity expected - got '<class '__main__.ModelName'>'
猜你喜欢
  • 2020-02-04
  • 2016-12-12
  • 2015-10-24
  • 2015-10-24
  • 2014-05-07
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2013-01-07
相关资源
最近更新 更多