Python MySQL コネクタ: Fetchone 使用時に「未読の結果が見つかりました」
Python コネクタを使用して解析された JSON データを MySQL データベースに挿入するとき、 「未読の結果が見つかりました。」というエラーが発生します。このエラーは、コードの特定のセクションに関連付けられています。
コード スニペットでは、cursor.execute メソッドを使用して一連のクエリが実行され、その後、cursor.fetchone を呼び出して、結果セット。ただし、このコードをより大きなプログラムに追加すると、同じカーソルを使用する後続のクエリは「未読の結果が見つかりました」エラーで失敗します。
このエラーは、前のクエリで未処理の結果があることを示しています。この問題を解決するには、cursor.fetchall メソッドを使用して各クエリの結果を抽出することをお勧めします。ただし、mysql.connector.errors.InterfaceError を処理するために Try-Except ブロック内でこれを実行しようとすると、失敗することが判明しました。
エラーの原因となるコードの特定のセクションは次のとおりです:
cursor.execute(query,(travel_mode, Orig_lat, Orig_lng, Dest_lat, Dest_lng, time_stamp)) leg_no = cursor.fetchone()[0] try: cursor.fetchall() except mysql.connector.errors.InterfaceError as ie: if ie.msg == 'No result set to fetch from.': pass else: raise cursor.execute(query,(leg_travel_mode, leg_Orig_lat, leg_Orig_lng, leg_Dest_lat, leg_Dest_lng, time_stamp))
この問題を解決するには、カーソルの作成時にバッファリングされたパラメーターを True に設定する必要があります。これにより、後続のクエリが実行される前に、クエリのすべての結果がバッファにフェッチされるようになります。
cursor = cnx.cursor(buffered=True)
バッファパラメータを True に設定すると、「未読の結果が見つかりました」というエラーは発生しなくなります。
以上が`fetchone()` を使用すると、Python MySQL コネクタが「未読の結果が見つかりました」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。