5

如何使用 sqlalchemy 获取更新语句受影响的行数?(我正在使用 mysql 和 python/金字塔):

from sqlalchemy.engine.base import ResultProxy

@classmethod
def myupdate(cls, id, myvalue):
    DBSession.query(cls).filter(cls.id == id).update({'mycolumn': myvalue})
    if ResultProxy.rowcount == 1:
        return True
    else:
        return False

注意:我看到了这篇文章,但根据文档:“'rowcount' 报告了与 UPDATE 或 DELETE 语句的 WHERE 标准匹配的行数。”....换句话说,它不返回数字更新或删除语句影响的行数。

4

1 回答 1

1

根据文档,您可以通过为 DBAPI 指定正确的选项来覆盖此行为。

我没有准备好测试的 mysql,但我认为将正确的选项(client_flag或者found_rows=False取决于使用的 api)添加到配置 url 应该可以解决问题。检查mysqlconnectoroursql的相应来源以获取更多信息。

我希望这足以帮助你。

于 2012-10-10T20:58:18.463 回答