MySQL データベースがあり、DB API から SQLAlchemy に切り替えています。ドキュメントから、ResultProxy.rowcount は、UPDATE ステートメントによって影響を受ける行の数を報告することになっています。
このクエリを SQLAlchemy で実行すると:
UPDATE table
SET field =
IF(field < 10, 10, field) WHERE id = 1
一致する行がある場合は 1 の行数を返しますが、「フィールド」の任意の値に対して (10 以上の場合でも)。DB API でこのクエリを実行すると、影響を受ける行の正しい数が返されました (フィールドが 10 以上の場合は 0、それ以下の場合は 1)。
最初に選択クエリを実行して、変更があったかどうかを判断する必要があるため、問題が発生しています。SQLAlchemy のバグですか? ドキュメントには、一致する行の数ではなく、影響を受ける行の数を返す必要があることが明確に記載されています。
ありがとう。