在我的应用程序中,当我向mysql提交UPDATE查询时,有三种可能的结果。
(1)找到并更新了一个匹配的行
(2)找到一个匹配的行,但更新无效,因为它不会改变任何内容
(3)找不到匹配的行。
Pymysql的cursor.execute()函数返回受影响的行数:案例(1)为1,案例(2)和(3)为0。
我是否可以在不首先进行额外查询的情况下区分情况(2)和(3)以查看该行是否存在以及更新是否会影响它?换句话说,除了受影响的行数之外,我还能获得匹配的行数吗?
答案 0 :(得分:0)
请参见github PyMySQL issues 347 comment by methane
有两种方法可以知道匹配的行数。
- 传递客户标志
从pymysql.constants导入客户端
conn = pymysql.connect(...,client_flag = CLIENT.FOUND_ROWS)
在这种情况下,rowcount是与WHERE子句匹配的行。 (但是你 不知道行已更改)
- 信息
执行查询后,您可以通过以下方式显示短信 打印(cursor._result.message)。
与mysql命令行客户端显示的相同。 https://dev.mysql.com/doc/refman/5.7/en/mysql-info.html