Reputation: 3918
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.
Upvotes: 6
Views: 4938
Reputation: 12951
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.
Upvotes: 1