Как получить количество затронутых строк в sqlalchemy?

StackOverflow https://stackoverflow.com/questions/702342

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть один вопрос, касающийся Python и модуля sqlalchemy.Что является эквивалентом для cursor.rowcount в sqlalchemy Python?

Это было полезно?

Решение

ResultProxy объекты имеют rowcount собственность в том числе.

Другие советы

rowcount является не количество затронутых строк.Это количество совпадающих строк.Увидеть что док говорит

Этот атрибут возвращает количество строк подобранный, что не обязательно совпадает с количеством строк , которые были фактически измененный - оператор UPDATE, например, может не иметь чистых изменений в данной строке, если заданные значения совпадают с теми, которые уже присутствуют в строке.Такая строка была бы сопоставлена, но не изменена.На бэкэндах, которые используют оба стиля, таких как 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
    

То, что говорит Шиплу, конечно, правильно, однако, чтобы ответить на вопрос, во многих случаях вы можете легко сделать совпадающие столбцы равными измененным столбцам, включив условие, что значение отличается в предложении WHERE, т. Е.:

UPDATE table
SET column_to_be_changed = "something different"
WHERE column_to_be_changed != "something different" AND [...your other conditions...]

rowcount затем вернет количество затронутых строк, поскольку оно равно количеству совпадающих строк.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top