记录mysql更新错误

文章讨论了在使用SQLAlchemy进行批量更新时遇到的InvalidRequestError,原因在于不能直接在Python中评估复杂的查询。提供了fetch选项来在删除前执行选择查询以确保正确性,但可能降低效率;而False选项虽然高效但可能导致后续会话使用不正确数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错内容:

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:这不会尝试更新会话,因此非常有效,但是,如果在删除后继续使用会话,则可能会得到不正确的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值