39

我有一个关于 Python 和 sqlalchemy 模块的问题。cursor.rowcountsqlalchemy Python 中的等价物是什么?

4

3 回答 3

36

ResultProxy对象也有rowcount属性。

于 2009-03-31T18:21:52.733 回答
22

rowcount不是受影响的数。它的匹配行数。看看医生怎么说

此属性返回匹配的行数,它不一定与实际修改的行数相同- 例如,如果给定的 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
    
于 2017-04-21T08:57:47.647 回答
2

Shiplu 所说的当然是正确的,但是,要回答这个问题,在许多情况下,您可以通过在 WHERE 子句中包含值不同的条件来轻松地使匹配的列等于更改的列,即:

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

rowcount然后将返回受影响的行数,因为它等于匹配的行数。

于 2018-12-07T15:47:37.397 回答