SQLObjectを使用して既にデプロイされているアプリケーションでは、以前の値が特定の値と一致する場合にのみ、値を更新する必要があります。
同等の sql は次のようになります。
UPDATE jobs SET status='150' WHERE id=1234 AND status='100'
これが必要なのは、ジョブを取得し、データベースを更新してジョブを「取得済み」としてマークする必要がある可能性がある、さまざまなサーバー (お互いを認識していない) にデーモンのインスタンスが多数あるためです。
同じ値を設定する 2 つのノードからの「二重更新」を防止したいと考えています。
結果として、影響を受ける行の数を取得できればいいのにと思います。結果が 0 の場合、「ジョブはフェッチと更新の間で既に取得されています」と言うことができます...
更新を行うコードの実際の部分は次のようになります。
def __setattr__(self, name, value):
"""Override setattr to log build status changes"""
[...]
sqlobject.SQLObject.__setattr__(self, name, value)