在已部署的应用中,使用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)