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