PythonとMySQLを連携。データベースから複数の条件でデータを抽出しようとしたときに出会ったエラー

スポンサーリンク

データベースから複数の条件で数字が抜き出したい

最近、ずっとPHPばかりを触る生活が続いていたのですが、最近再びPythonを触る機会が増えてきました。

だいたい人から頼まれる仕事は「PHP」です。

ある程度自分で主導権が握れるお仕事だと「Python」なんてふうな使い分けなんですが…。

だいぶ久しぶりで色々と忘れています…。

ということでいつか来た道かもしれませんが、PythonとMySQLを連携して使用していたときに出会ったエラーです。

raise errors.InternalError(“Unread result found”)mysql.connector.errors.InternalError: Unread result found

このエラーが発生したのは、1つのプログラムファイルから、複数の条件で抽出しようとした際に発生。

環境はPython3.6、MySQLとの接続には MySQL 公式の「mysql-connector-python-rf」を使っています。

データベースから複数のデータを取り出したかったので…。

url = urlparse('mysql://user:pass@localhost:3306/db')

conn = mysql.connector.connect(
    host = 'localhost',
    port = 3306,
    user = 'root',
    password = '',
    database = url.path[1:],
)

といった感じで接続。

ここから複数データが欲しかったので

cur = conn.cursor()
cur2 = conn.cursor()

としてから、

cur.execute('SELECT * FROM db')
cur2.execute('SELECT * FROM db')

といった感じで、複数データを使用できるよう進めていると…。

raise errors.InternalError(“Unread result found”)mysql.connector.errors.InternalError: Unread result found

なんてエラーが。

2つ用意していましたが、curか、cur2のそれぞれ片方を削除すると普通に読み込めるので、どうやら複数の場合が都合が悪いらしい。

ということで調べてみると。

「buffered=True」

を付けてあげると良いみたいです。

cur = conn.cursor(buffered=True))
cur2 = conn.cursor(buffered=True))

としてあげると、無事に読み込み成功。

以前も同じようなケースで使用した記憶がある気もするんですが、こんなことしないといけなかったけ…?

忘れた頃にまた、必要になりそうな予感。と、いうことで備忘録にまとめておきたいと思います。

スポンサーリンク

シェアする

フォローする

スポンサーリンク