使用 Python 游标调用 MySQL 存储过程
在 Python 应用程序中使用 MySQL 存储过程时,正确处理结果检索至关重要。尽管看起来很简单,但从过程中检索结果可能会导致一些意外错误。
一个常见的挑战是在使用cursor.fetchall() 时遇到异常“没有可从中获取的结果集”。出现这种情况是因为存储过程通常返回多个结果集,而cursor.fetchall() 被设计为仅迭代一组结果。
要解决此问题,有必要检索感兴趣的特定结果集。这可以使用cursor.stored_results()方法来完成,该方法返回结果集生成器。然后可以使用 fetchall() 单独获取每个结果集。
for result in cursor.stored_results(): people = result.fetchall()
在某些情况下,您在使用cursor.execute() 时也可能会遇到错误“Use cmd_query_iter for statements with multiple query”。出现这种情况是因为连接器错误地将过程调用解释为多查询语句。
要纠正此问题,建议在执行多个查询时显式设置 multi=True 参数。这可确保连接器正确处理此类场景。
cursor.execute("call getperson(1)", multi=True)
通过遵循这些准则,您可以有效地从存储过程中检索结果并根据需要处理多个结果集。
以上是如何在 Python 中正确检索 MySQL 存储过程的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!