2009-03-31 4 views

ответ

21

Хотя это не указано в документах, объект ResultProxy также имеет свойство rowcount.

+0

'rowcount' не на самом деле подсчет * затронутых строк *. См. Мой ответ для подробностей. –

+0

Документы включают в себя 'rowcount' в эти дни: http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.ResultProxy.rowcount –

5

rowcount является не Число затронутых строк. Его количество совпадающих строк. Посмотрите, что doc говорит

Этот атрибут возвращает количество строк совпавших, которая не обязательно совпадает с числом строк, которые были фактически модифицированном - с UPDATE заявление, например, может не иметь сети изменение в заданной строке, если заданные значения SET такие же, как те, что присутствуют в строке. Такая строка будет соответствовать, но не будет изменена. На движках, которые показывают как стили, такие как MySQL, rowcount по умолчанию настроено вернуть количество матчей во всех случаях

Таким образом, для обоих из следующих сценариев rowcount сообщат 1. Из-за Rows matched: 1

  1. одна строка изменена с update заявление.

    Query OK, 1 row affected (0.00 sec) 
    Rows matched: 1 Changed: 1 Warnings: 0 
    
  2. же update выполняется оператор.

    Query OK, 0 row affected (0.00 sec) 
    Rows matched: 1 Changed: 0 Warnings: 0 
    
Смежные вопросы