报错内容:
sqlalchemy.exc.InvalidRequestError: Could not evaluate current criteria in Python: "Cannot evaluate clauselist with operator <function comma_op at 0x100c0b670>". Specify 'fetch' or False for the synchronize_session parameter.
场景复现:批量更新
ids = [.....] session.query(Table).filter(Table.user_id.in_(ids)).update({'ticket_status': "ssd"})
- evaluate':它直接在Python中评估产生的查询,以确定需要从会话中删除的对象。这是默认设置,非常有效,但是不够鲁棒,无法评估复杂的查询。如果无法评估查询,则会引发sqlalchemy.orm.evaluator。UnevaluatableError条件
- 'fetch':这将在删除之前执行选择查询,并使用该结果来确定会话中需要删除的对象。这效率较低(可能效率较低),但能够处理任何有效查询
- False:这不会尝试更新会话,因此非常有效,但是,如果在删除后继续使用会话,则可能会得到不正确的结果。