Я использую 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
В вашем случае проблема заключается в использовании SSCursor
. Считая предоставленную вами документацию, вы можете найти, какие ограничения:
Однако есть ограничения. Протокол MySQL не поддерживает возврат общего количества строк, поэтому единственный способ рассказать, сколько строк есть, - это перебрать каждую возвращаемую строку. Кроме того, в настоящее время невозможно прокручивать назад, так как в памяти сохраняется только текущая строка.
Поэтому, если вы хотите знать, сколько строк затронуто, используйте буферизованный курсор conn.cursor()
вместо серверного.
Примечание: затронутые строки могут быть не равны количеству строк в таблице.