우리는 MySQL 데이터베이스가 있고 DB API에서 SQLAlchemy로 전환 중입니다. 문서에서 ResultProxy.rowcount는 UPDATE 문에 의해 영향을받는 행 수를보고합니다. 일치하는 행이 있다면SQLAlchemy UPDATE에 영향을받는 행이 없을 때 ResultProxy.rowcount가 0이 아닙니다.
UPDATE table
SET field =
IF(field < 10, 10, field) WHERE id = 1
그것은 하나의 행 개수를 반환되지만, "필드"중 어느 값 (때에도 크거나 10보다 같)
난 SQLAlchemy의하여이 쿼리를 실행할 경우. DB API를 사용하여이 쿼리를 실행하면 영향을받는 행 수 (필드가 10보다 크거나 같을 때는 0, 더 낮은 경우에는 1)이 반환되었습니다.
변경 사항이 있는지 여부를 확인하기 위해 먼저 선택 쿼리를 실행해야하기 때문에 문제가 발생합니다. SQLAlchemy의 버그입니까? 문서에서는 명확하게 일치하는 행의 수가 아니라 영향을받는 행의 수를 반환해야한다고 명시합니다.
감사합니다. ROW_COUNT()
에 대한
감사합니다, 그 영리한 해결 방법입니다! SQLAlchemy가이 값을 반환 한 이유를 찾는데 너무 집중했습니다. 그래도 버그가있는 것 같아서 SQLAlchemy에 연락 할 것입니다. – Faelenor