[英]Update value checking previous one - SQLObject
在已經使用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)
SQLObject有一些API層。 如果使用高級API(SQLObject繼承的類),則無法執行條件UPDATE。 where
-clause在SQLBuilder的Update中可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.