0

问题

我必须R1, R2, ..., Rn使用 sqlalchemy 更新 Postgres 数据库中的几条记录。操作必须是原子的;即,如果Ri失败,则必须回滚整个事务。

代码是这样的:

try:
    for instance_id in payload:
        instance = get_or_404(instance_id)
        sql = build_sql_for_patch(instance, payload)
        db.session.add(sql)
    db.session.commit()
except Exception:
    db.session.rollback()
    raise ValueError(...)

如果出现错误,我想返回这样的消息:

{
   "errors": [
      {"record": 1, "reason": "Something is wrong with record 1."},
      {"record": 4, "reason": "Something is wrong with record 4."},
      ...
   ]
}

问题

有没有办法以这种粒度获取 Postgres 事务错误?理想情况下,我希望每条失败的记录都有一个错误。如果这不可能,我想获取失败的记录号并显示正确的错误消息。

4

0 回答 0