Python mysql.connector rowcount > 0 但 fetchall() 未显示任何结果
Python mysql.connector rowcount > 0 but fetchall() shows no results
我正在使用 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: No result set to fetch from." 错误,但行数 > 0(为 2)。我知道 table 中只有 2 个结果。
系统详情:
- Windows 10
- Python 3.7.0
- 服务器类型:MariaDB
- 服务器版本:10.3-MariaDB
最初我以为我已经通过向光标添加 buffered
参数来解决此问题。
cursor = db.cursor(buffered=True)
这不是真的。
我在调试时意识到我在 cursor.fetchall() 上有一个监视变量。这是 运行 在代码中调用它之前的命令,这意味着当它到达代码时我们没有要获取的结果。
解决方法:不要有cursor.fetchall()
的watch变量
我正在使用 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: No result set to fetch from." 错误,但行数 > 0(为 2)。我知道 table 中只有 2 个结果。
系统详情: - Windows 10 - Python 3.7.0 - 服务器类型:MariaDB - 服务器版本:10.3-MariaDB
最初我以为我已经通过向光标添加 buffered
参数来解决此问题。
cursor = db.cursor(buffered=True)
这不是真的。
我在调试时意识到我在 cursor.fetchall() 上有一个监视变量。这是 运行 在代码中调用它之前的命令,这意味着当它到达代码时我们没有要获取的结果。
解决方法:不要有cursor.fetchall()
的watch变量