user_78361084
user_78361084

Reputation: 3918

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.

Upvotes: 6

Views: 4938

Answers (1)

madjar
madjar

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

Related Questions