我有一个Event模型,其中external_id设置为唯一。
session1 = create_session()
session2 = create_session()
e1 = Event(external_id=1, headline='session1')
session1.add(e1)
e2 = Event(external_id=1, headline='session2')
session2.add(e2)
session1.commit()
session2.commit()
s = create_session()
e = s.query(Event).filter_by(external_id=1).first()
print e.headline
我收到输出“session1”没有错误,这意味着session2.commit失败,默默无闻。最终我想选择是否要覆盖db中的内容。因此,如果session2.commit()失败,我想选择更改插入以更新某些情况。任何人都可以帮忙吗?感谢。
EDITED: 我找到了答案。这样做的方法是通过双通机制: 两个会话都应该使用最少的信息添加/提交行(仅限唯一键) 两个会话都应该进行查询并获取更新行 如果我们想要一个会话具有优先权,请确保我们使用锁来进行更新