从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
答案 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