项目场景:
flask搭建的web项目,使用sqlalchemy工具查询数据库
问题描述
从数据库中查询出数据列表,然后在列表中过滤数据,再批量删除数据,根据id无法删除数据,会报错
SysParameter.query.all()
......
for i in tartgetId:
SysParameter.query.filter(SysParameter.id == int(i)).delete()
db.session.commit()
AttributeError: 'SysParameter' object has no attribute '_sa_instance_state'
原因分析:
查询的query和delete是两个会话,要进行delete动作前要提交上一个query的会话
解决方案:
使用db.session.commit()提交会话
SysParameter.query.all()
......
db.session.commit()
for i in tartgetId:
SysParameter.query.filter(SysParameter.id == int(i)).delete()
db.session.commit()