都能得到正确的结果了,为什么不能直接使用.delete()?

db.session.query(Article).filter(Article.id.in_(items)).delete()

报错:

sqlalchemy.exc.InvalidRequestError

InvalidRequestError: Could not evaluate current criteria in Python. Specify 'fetch' or False for the synchronize_session parameter.

但是:

db.session.query(Article).filter(Article.id==1).delete()
db.session.query(Article).filter(Article.id.in_(items))

都能得到正确的结果。为什么不能直接使用.delete()?

我按下面的写法能正常工作。

art_items=Article.query.filter(Article.id.in_(items))for item in art_items:
    db.session.delete(item)
db.session.commit()

就是希望了解一下原理。为什么不能在使用_in的时候直接后面接delete()?


largeQ
浏览 180回答 1
1回答

神不在的星期二

为什么无法删除 in 操作查询出来的记录?session.query(User).filter(User.id.in_((1, 2, 3))).delete()抛出这样的异常:sqlalchemy.exc.InvalidRequestError: Could not evaluate current criteria in Python.  Specify 'fetch' or False for the synchronize_session parameter.但这样是没问题的:session.query(User).filter(or_(User.id == 1, User.id == 2, User.id == 3)).delete()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server