我们有一个 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 中的错误吗?该文档明确指出,如果应该返回受影响的行数,而不是匹配的行数。
谢谢。