Получить MySQL курсора количество строк без выборки

Я использую Python MySQL Connector, и я хочу знать, сколько строк вернуло мое выражение select без необходимости их предварительного извлечения. Пример кода, который я использую:

import mysql.connector

config = {
    'user': 'sample_user',
    'password': 'sample_password',
    'host': '127.0.0.1',
    'database': 'sample_database'
    }

connection = mysql.connector.connect(**self.config)

cursor = connection.cursor()

query = """
        SELECT *
        FROM sample_table
        """

cursor.execute(query)

count = cursor.rowcount 
print(count) # This prints -1 as the rows have not yet been fetched

i = 0
for row in cursor:
    i += 1
    # Save row to file
    print("Progress {:2.1%}".format(i / count), end="\r") # This prints a negative number since count is -1

Я хочу показать прогресс выборки, но для этого мне нужно общее количество строк, выбранных с помощью SELECT заявление до получения.

Есть ли способ получить количество строк без выборки или запуска отдельного SELECT COUNT(*) запрос первым?

1 ответ

Нет, если вы не сохранили значение счетчика строк в противном случае.

И на самом деле ни один объект курсора не даст поточный результат, вы должны выполнять итерацию всей таблицы по пакетам через ключевые слова limit/offset.

Другие вопросы по тегам