Pymysql execute () - возвращаемое значение не равно количеству затронутых строк

0

Я использую 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
Теги:
pymysql

1 ответ

0

В вашем случае проблема заключается в использовании SSCursor. Считая предоставленную вами документацию, вы можете найти, какие ограничения:

Однако есть ограничения. Протокол MySQL не поддерживает возврат общего количества строк, поэтому единственный способ рассказать, сколько строк есть, - это перебрать каждую возвращаемую строку. Кроме того, в настоящее время невозможно прокручивать назад, так как в памяти сохраняется только текущая строка.

Поэтому, если вы хотите знать, сколько строк затронуто, используйте буферизованный курсор conn.cursor() вместо серверного.

Примечание: затронутые строки могут быть не равны количеству строк в таблице.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню