你可以使用pymysql从mysql UPDATE查询中获取受影响的行和行匹配吗?

时间:2017-09-01 23:14:22

标签: mysql pymysql

在我的应用程序中,当我向mysql提交UPDATE查询时,有三种可能的结果。

(1)找到并更新了一个匹配的行

(2)找到一个匹配的行,但更新无效,因为它不会改变任何内容

(3)找不到匹配的行。

Pymysql的cursor.execute()函数返回受影响的行数:案例(1)为1,案例(2)和(3)为0。

我是否可以在不首先进行额外查询的情况下区分情况(2)和(3)以查看该行是否存在以及更新是否会影响它?换句话说,除了受影响的行数之外,我还能获得匹配的行数吗?

1 个答案:

答案 0 :(得分:0)

请参见github PyMySQL issues 347 comment by methane

  

有两种方法可以知道匹配的行数。

     
      
  1. 传递客户标志
  2.   
     

从pymysql.constants导入客户端

     

conn = pymysql.connect(...,client_flag = CLIENT.FOUND_ROWS)

     

在这种情况下,rowcount是与WHERE子句匹配的行。 (但是你   不知道行已更改)

     
      
  1. 信息
  2.   
     

执行查询后,您可以通过以下方式显示短信   打印(cursor._result.message)。

     

与mysql命令行客户端显示的相同。   https://dev.mysql.com/doc/refman/5.7/en/mysql-info.html