如何使用 sqlalchemy 获取更新语句影响的行数? (我正在使用 mysql 和 python/pyramid):
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
注:我看到了这个帖子 https://stackoverflow.com/questions/702342/how-to-get-number-of-affected-rows-in-sqlalchemy但根据the docs http://docs.sqlalchemy.org/en/rel_0_7/core/connections.html#sqlalchemy.engine.base.ResultProxy.rowcount:“‘rowcount’报告与 UPDATE 或 DELETE 语句的 WHERE 标准匹配的行数。”....换句话说,它不返回行数affected通过更新或删除语句。
您可以通过为 DBAPI 指定正确的选项来覆盖此行为,根据the doc http://docs.sqlalchemy.org/en/rel_0_7/dialects/mysql.html#rowcount-support.
我没有准备好测试 mysql,但我认为添加正确的选项(或者client_flag
or found_rows=False
取决于所使用的 api) 到配置 url 应该可以解决问题。检查相应的来源mysql 连接器 https://bitbucket.org/sqlalchemy/sqlalchemy/src/b4fdcb0c3303/lib/sqlalchemy/dialects/mysql/mysqlconnector.py?at=default#cl-96 and oursql https://bitbucket.org/sqlalchemy/sqlalchemy/src/b4fdcb0c3303/lib/sqlalchemy/dialects/mysql/oursql.py?at=default#cl-219了解更多信息。
我希望这足以帮助你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)