MySQLdb Python更新匹配行与更改行

时间:2014-05-27 13:35:01

标签: python mysql mysql-python

从mysql客户端命令行,我在UPDATE之后得到有用的信息,告诉我WHERE子句匹配了多少行,以及实际更改了多少行。在我将值设置为现有值的情况下,我得到1匹配并且0更改。

这是我想在Python MySQLdb脚本中捕获的非常有用的信息。我已经尝试过db.affected_rows()和cursor.rowcount,但它们总是出现1(似乎是"匹配的"值)。我已经尝试过,无论是否提交。

如何在Python中找到Match值和Changed值?

mysql> UPDATE userlogtable SET somefield="samedata" WHERE idxfield=1;
Query OK, 0 rows affected (0.02 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> UPDATE userlogtable SET somefield="newdata" WHERE idxfield=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

相关但不重复的问题: Python MYSQLdb documentation missing details?

1 个答案:

答案 0 :(得分:2)

默认情况下,db.affected_rows()cursor.rowcount应该会为您提供已更改的行数。 FOUND_ROWS选项使cursor.rowcount返回匹配的行数:

db_connection = MySQLdb.connect(
        host = settings['dbHost'],
        user = settings['dbUser'],
        passwd = settings['dbPass'],
        db = settings['dbName'],
        client_flag = MySQLdb.constants.CLIENT.FOUND_ROWS
        )

有两种获取匹配行数和更改行数的方法,请查看以下问题:

How to get matched Rows from MySQLdb.cursors.Cursor python2.6