Python mysql.connector rowcount> 0但fetchall()没有显示结果

时间:2018-09-12 10:56:42

标签: python mysql python-3.x mysql-python mysql-connector

我正在使用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

1 个答案:

答案 0 :(得分:1)

我本来是通过将buffered参数添加到光标来解决此问题的。

cursor = db.cursor(buffered=True)

这不是正确的。

我在调试时意识到,我在cursor.fetchall()上有一个watch变量。这是在代码中调用该命令之前运行的命令,这意味着当它到达代码时,我们将无法获取任何结果。

解决方案:不用监视cursor.fetchall()

的变量