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)
发布了70 篇原创文章 · 获赞 56 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zhangenter/article/details/104163279