python、mysqlconnector、mysqlcursor.fetchall()抛出“no result set”错误,尽管查询返回行

relj7zay  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(642)

我有一个简单的python3脚本,使用mysqlconnector访问数据库。独立运行相同的查询(通过phpmyadmin)返回我期望的结果;包含用户计数的单行。但是,当我执行脚本时,会抛出一个异常,因为没有返回任何结果。
我的剧本:

  1. connection = self.Connect()
  2. cursor = connection.cursor()
  3. query = 'SELECT COUNT(UserName) FROM ig_UserAccounts WHERE UserName=\'TestUser\''
  4. cursor.execute(query)
  5. results = cursor.fetchall()

异常消息:

  1. mysql.connector.errors.InterfaceError: No result set to fetch from.

在phpmyadmin中成功执行了相同的查询
我验证数据库中数据库连接的完整性 self.Connect() 像这样的方法,并用它进行了测试 INSERT 确认连接正常的声明:

  1. try:
  2. connection = mysql.connector.connect(user=self.username, password=self.password, host=self.hostname, database=self.databaseName)
  3. except mysql.connector.Error as e:
  4. if e.errno == errorcode.ER_ACCESS_DENIED_ERROR:
  5. print("Invalid database username or password")
  6. return None
  7. elif e.errno == errorcode.ER_BAD_DB_ERROR:
  8. print("Invalid database name")
  9. return None
  10. else:
  11. print(e)
  12. return None
  13. return connection

我也试过用 fetchone() 方法代替 fetchall() 但是,这只是返回一个none类型。

oug3syen

oug3syen1#

我现在已经解决了这个问题,这似乎是一个调试问题(在visual studio 2017中)。如果我在脚本的早期放置一个断点并跳过 execute() 以及 fetchall() 一行一行地,结果集在两行之间清空。
但是,如果仅在脚本末尾放置断点以暂停执行,则结果集将按预期填充。

相关问题