Получить MySQL курсора количество строк без выборки - PullRequest
0 голосов
/ 04 декабря 2018

Я использую 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 Ответ

0 голосов
/ 04 декабря 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...