首页 > 解决方案 > 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()

提前致谢。

标签: pythonsqlflasksqlalchemyflask-sqlalchemy

解决方案


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


推荐阅读