StaleDataError:更新表中的行时出错:期望更新1行; 2匹配

时间:2017-01-24 09:37:05

标签: python sqlalchemy

我正在尝试根据某些过滤器更新表格中的行。我可以得到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

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题(主要是由于被解雇)。数据库表key与我的sql_alchemy模型(针对该表)中定义的key不同,后者导致sql_alchemy使用一列(old key),该列与其中的多行匹配事务更新步骤中的数据库。

将sql_alchemy模型primary key更新为实际的数据库primary key可以解决此问题。