Python mysql.connector rowcount> 0, но fetchall () не показывает результатов

0

Я использую mysql.connector и запускаю:

import mysql.connector
from mysql.connector import errorcode

def get_db_connection(user, password, database):
        try:
            return mysql.connector.connect(user=user, password=password,
                                           host='localhost',
                                           database=database)

        except mysql.connector.Error as err:
            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                print("Something is wrong with your user name or password")
            elif err.errno == errorcode.ER_BAD_DB_ERROR:
                print("Database does not exist")
            else:
                print(err)
        else:
            cnx.close()

    db = get_db_connection('user', 'password', 'database123')

    cursor = db.cursor()

    query = "SELECT * FROM companies;"

    cursor.execute(query)

    companies_results = cursor.fetchall()

Я получаю "mysql.connector.errors.InterfaceError: нет результата для извлечения". ошибка еще число строк> 0 (это 2). Я знаю, что в этой таблице всего 2 результата.

Сведения о системе: - Windows 10 - Python 3.7.0 - Тип сервера: MariaDB - Версия сервера: 10.3-MariaDB

  • 0
    Что произойдет, если вы не сделаете подсчет строк и просто вызовете fetchall?
  • 0
    Тоже самое к сожалению
Показать ещё 1 комментарий
Теги:
python-3.x
mysql-python
mysql-connector

1 ответ

1
Лучший ответ

Первоначально я решил, что исправил это, добавив buffered параметр в курсор.

cursor = db.cursor(buffered=True)

ЭТО НЕПРАВДА.

Я понял, что при отладке у меня была переменная watch на cursor.fetchall(). Это выполнялось командой раньше, когда она вызывается в коде, что означает, что к тому времени, когда она достигнет кода, мы не получим результатов.

Решение. Не имеют переменных просмотра cursor.fetchall()

Ещё вопросы

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