執行一個更新語句
Order.query.filter(Order.OrderId.in_(ids)).update({Order.IsDeleted:1})
發生報錯
sqlalchemy.exc.InvalidRequestError: Could not evaluate current criteria in Python: “Cannot evaluate clauselist with operator <function comma_op at 0x000001C98228B510>”. Specify ‘fetch’ or False for the synchronize_session parameter.
搜到的解釋大致是說刪除記錄時,默認會嘗試刪除session 中符合條件的對象,而 in 操作還不支持,於是就出錯了。解決辦法就是刪除時不進行同步,然後再讓 session 裏的所有實體都過期。更新操作的問題也是類似的。
最後按提示給synchronize_session參數設置Flase值傳進去,一切就正常了
Order.query.filter(Order.OrderId.in_(ids)).update({Order.IsDeleted:1}, synchronize_session=False)