如何使用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
注意:我看到了this post但是根据the docs:“'rowcount'报告了UPDATE或DELETE语句的WHERE标准匹配的行数。”....其他单词,它不会通过更新或删除语句返回受影响的行数。
答案 0 :(得分:1)
根据the doc,您可以通过为DBAPI指定正确的选项来覆盖此行为。
我没有准备好测试的mysql,但我认为在配置网址中添加正确的选项(client_flag
或found_rows=False
,具体取决于使用的api)应该可以解决问题。查看mysqlconnector和oursql的相应来源以获取更多信息。
我希望这足以帮助你。