在已经部署的应用程序中,使用SQLObject ,只有在前一个值与某个值匹配时,我才需要更新一个值。
等效的 sql 可以是:
UPDATE jobs SET status='150' WHERE id=1234 AND status='100'
我需要这个,因为我们在不同的服务器上有许多守护进程实例(彼此不认识),它们可能想要接受作业并更新数据库以将作业标记为“已接受”。
我想防止两个节点设置相同的值“双重更新”。
如果我能得到受影响的行数,那就太好了。结果为 0 将允许说“作业已在获取和更新之间进行”......
执行更新的代码的实际部分如下所示:
def __setattr__(self, name, value):
"""Override setattr to log build status changes"""
[...]
sqlobject.SQLObject.__setattr__(self, name, value)