How to get number of affected rows in sqlalchemy?
Actually there is no way to know this precisely for postgres.
The closes thing is rowcount
. But
rowcount
is not the number of affected rows. Its the number of matched rows. See what doc says
This attribute returns the number of rows matched, which is not necessarily the same as the number of rows that were actually modified - an UPDATE statement, for example, may have no net change on a given row if the SET values given are the same as those present in the row already. Such a row would be matched but not modified. On backends that feature both styles, such as MySQL,
rowcount
is configured by default to return the match count in all cases
So for both of the following scenarios rowcount
will report 1
. Because of Rows matched: 1
one row changed with
update
statement.Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
same
update
statement is executed.Query OK, 0 row affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0
ResultProxy
objects have a rowcount
property as well.