pymysql execute()-返回值不等于受影响的行数

bnl4lu3b  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(402)

我正在使用pymysql连接到本地mysql安装。我建立了如下所示的连接,但我的问题是关于最后一行的execute()调用的返回值。
文档说明execute方法的返回值等于受影响的行数。我知道数据库表正好有205299行,所以有人能告诉我为什么看到18446744073709551615这一大得多的行吗?

>>> import pymysql
>>> conn = pymysql.connect(
...   host='localhost',
...   port=3306,
...   user='username',
...   passwd='password',
...   db='dbname',
...   cursorclass = pymysql.cursors.SSCursor
... )
>>> cursor = conn.cursor()
>>> cursor.execute("SELECT support_id FROM tablename")
18446744073709551615
j13ufse2

j13ufse21#

在你的情况下,问题在于使用 SSCursor . 阅读您提供的文档,您可以发现以下限制:
不过,也有局限性。mysql协议不支持返回总行数,因此判断有多少行的唯一方法是遍历返回的每一行。另外,当前无法向后滚动,因为只有当前行保存在内存中。
因此,如果您想知道有多少行受到影响,请使用缓冲游标 conn.cursor() 而不是服务器1。
注意:受影响的行可能不等于表中的行数。

相关问题