How do I get the number of rows affected with SQL Alchemy?

怎甘沉沦 提交于 2019-12-06 04:22:36

问题


How do I get the number of rows affected for an update statement with sqlalchemy? (I am using mysql and 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

Note: I saw this post but according to the docs: "The ‘rowcount’ reports the number of rows matched by the WHERE criterion of an UPDATE or DELETE statement."....in other words, it doesn't return the number of rows affected by the update or delete statement.


回答1:


You can override this behaviour by specifying the right option to the DBAPI, according to the doc.

I don't have a mysql ready to test, but I think adding the right option (either client_flag or found_rows=False depending on the api used) to the configuration url should do the trick. Check the corresponding source for mysqlconnector and oursql for more info.

I hope this will be enough to help you.



来源:https://stackoverflow.com/questions/12827519/how-do-i-get-the-number-of-rows-affected-with-sql-alchemy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!