Flask SQLAlchemy 批量删除记录

edh*_*hog 1 python sql sqlalchemy flask flask-sqlalchemy

我是 SQLAlchemy 的新手,我无法弄清楚如何一次删除多条记录。文档指出它与 .add() 相同,但使用 .delete() 代替。如果我附加 .first(),它会起作用,但是我不能使用 .all() 否则我会收到以下错误:

sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.list' is not mapped
Run Code Online (Sandbox Code Playgroud)

这是代码:

delete = Skilljoin.query.filter_by(staffid=30).all()
db.session.delete(delete)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

提前致谢。

小智 5

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()
Run Code Online (Sandbox Code Playgroud)

或者

Skilljoin.query.filter_by(staffid=30).delete() 
Run Code Online (Sandbox Code Playgroud)

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