StaleDataError:更新表中的一行时出现错误:预计更新 1 行;已匹配 2 条

use*_*900 0 python sqlalchemy

我正在尝试根据一些过滤器更新表中的行。我可以获得,如果行数为一,并且在保存会话时row_object抛出的行数超过一,我可以更新它。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
Run Code Online (Sandbox Code Playgroud)

jaz*_*bit 7

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

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