sqlalchemy使用in操作時要求synchronize_session爲False的錯誤

執行一個更新語句

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章