首页 >数据库 >mysql教程 >如何使用 Python 的'cursor.stored_results()”从 MySQL 存储过程中检索结果?

如何使用 Python 的'cursor.stored_results()”从 MySQL 存储过程中检索结果?

Barbara Streisand
Barbara Streisand原创
2024-12-01 12:38:15269浏览

How to Retrieve Results from a MySQL Stored Procedure using Python's `cursor.stored_results()`?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn