pymysqlでfetchall()の結果を辞書形式で受け取ったらはまった

スポンサーリンク
スポンサーリンク

経緯

 

pymysql ほかの mysqlクライアントでも一緒だと思いますが、

プログラムからmysqlに接続したとき、select文の結果を fetchall()で受け取ったときに、辞書形式で受け取りたいことがあります。
その場合、接続時にパラメータを渡すときに

cursorclass=pymysql.cursors.DictCursor)

みたいなオプションを付けると、

rows =  cursor.fetchall()

の結果を辞書形式で受け取れてハッピーだと思ったのですがはまりました。
id valというカラムがあって、辞書に対して、idを指定して、対応するvalの値を取得したかったのですが、id val というカラム名が含まれる辞書が作成されてややこしいことになります。

結論

#cursorclass=pymysql.cursors.DictCursor)

を使用するのを辞めました。
結果は、カラムが2つなので、タプルのリストで帰ってきます。

tuple_list = get_values()
ret = dict(tuple_list)
print(ret[‘KEY’])

このように、tuple_list に対してdict関数を呼び出すことで、目的の 辞書を作成することが出来ました。keyを指定することで、対応する値を取得できます。

めでたしめでたし。

タプル以外のリストではどうなるのか試してないので分かりませんが

 

スポンサーリンク
スポンサーリンク
開発 備忘録
スポンサーリンク
アパトサウルスをフォローする
アパトサウルスのブログ

コメント

タイトルとURLをコピーしました