使用 Python 游标从存储过程中检索结果
本文解决了使用 Python 从 MySQL 存储过程调用中检索结果的问题光标。尽管成功连接到数据库并在普通 SQL 查询上使用了cursor.execute(),但尝试使用cursor.fetchall() 或cursor.fetchone() 从存储过程调用中获取结果会返回错误:“mysql. Connector.errors.InterfaceError: No result set to fetch from."
解决方案
解决方案在于使用cursor.stored_results()检索结果集。此方法迭代任何可用的结果集,允许程序员使用所需的结果集。
以下代码演示了正确的方法:
import mysql.connector cnx = mysql.connector.connect(user='root', host='127.0.0.1', database='mytestdb') cnx._open_connection() cursor = cnx.cursor() cursor.callproc("getperson", [1]) for result in cursor.stored_results(): people = result.fetchall() for person in people: print(person) cnx.close()
此代码成功从存储的结果中获取结果过程中不遇到
注意事项
值得注意的是,即使没有多个 SELECT 语句,MySQL Python 连接器也可能会分配多个结果集。由于存储过程中包含了 INOUT 和 OUT 变量,而您没有这些变量,因此可能会发生这种分配。尽管如此,使用cursor.stored_results() 可以有效地处理这种潜在的分配,并允许成功检索结果。
以上是如何使用 Python 的'cursor.stored_results()”从 MySQL 存储过程中检索结果?的详细内容。更多信息请关注PHP中文网其他相关文章!