过时数据错误:在更新表中出现错误的行时:预期更新 1 行;2个匹配



我正在尝试根据某些过滤器更新表中的行。我可以获取row_object,如果行数为 1,并且如果多个行数,我可以更新它,它会在保存会话时抛出StaleDataError。我的数据库中有 2 行

以下是代码。

@require_context
def travel_update(context, travel_id, region, resource):
    with write_session() as session:
        time_now = timeutils.utcnow()
         travel_ref = session.query(models.Region_travel). 
             filter_by(id=travel_id, region=region, resource=resource). 
             first()
        if not travel_ref:
            raise exception.idNotFound(travel_id=travel_id)
        travel_ref.status = "failed"
        travel_ref.updated_at = time_now
        travel_ref.save(session)
        return travel_ref

我也有类似的问题(主要是因为我缺乏对细节的关注)。数据库表key与我的sql_alchemy模型中定义的key不同(针对该表),这导致sql_alchemy在事务的更新步骤中使用与数据库中多行匹配的列(old key)。

将sql_alchemy模型primary key更新到实际数据库primary key解决了该问题。

最新更新