Flask SQLAlchemy批量删除记录

时间:2020-05-03 12:22:28

标签: python sql flask sqlalchemy flask-sqlalchemy

我是SQLAlchemy的新手,我无法解决如何一次删除多个记录的问题。文档指出它与.add()相同,但改用.delete()。如果我附加.first()则可以使用,但是我不能使用.all(),否则会出现以下错误:

sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.list' is not mapped

代码如下:

delete = Skilljoin.query.filter_by(staffid=30).all()
db.session.delete(delete)
db.session.commit()

谢谢。

1 个答案:

答案 0 :(得分:2)

Skilljoin.query.filter_by(staffid=30).all()返回查询结果列表。

要删除任何一个,请使用:

skilljoins = Skilljoin.query.filter_by(staffid=30).all()
for skilljoin in skilljoins :
    db.session.delete(skilljoin)
db.session.commit()

Skilljoin.query.filter_by(staffid=30).delete() 

https://docs.sqlalchemy.org/en/13/orm/query.html#sqlalchemy.orm.query.Query.delete