Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 973
user_78361084 Avatar asked Nov 12 '22 20:11

user_78361084


1 Answers

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.

like image 175
madjar Avatar answered Nov 15 '22 10:11

madjar