PythonでMySQLdbつかってデータを取得する時にこんな感じにやってた
DBはこのエントリーのやつとして
import MySQLdb
con = MySQLdb.connect(db="currency", host="127.0.0.1", port=3306, user='root', passwd='root')
sql = "select target, value, inverse, created from currencies order by created desc"
cur = con.cursor()
cur.execute(sql)
row = cur.fetchone()
print row
実行結果はこんな感じでタプルで返ってくる
(‘EUR’, 0.0089999999999999993, 111.111, datetime.datetime(2010, 12, 3, 22, 4))
この場合、為替レートととろうと思ったら row[2]とかしないといけないので全く直感的じゃないよね。
で、phpのmysql_fetcharray() したときみたいな辞書(ハッシュ)で扱いたいなぁと思ったのでこんなことやってみた。
fields = [field[0] for field in cur.description]
dict_row = dict(zip(fields, row))
print dict_row
こうすると望み通り辞書でデータが扱えるようになってうれしい
{‘inverse’: 111.111, ‘target’: ‘EUR’, ‘value’: 0.0089999999999999993, ‘created’: datetime.datetime(2010, 12, 3, 22, 4)}
って満足してたら実はDictCursorって便利なのがあったらしく
from MySQLdb.cursors import DictCursor
cur = con.cursor(DictCursor)
cur.execute(sql)
row = cur.fetchone()
print row
ってやったら上のと全く同じの取得できた><
{‘inverse’: 111.111, ‘target’: ‘EUR’, ‘value’: 0.0089999999999999993, ‘created’: datetime.datetime(2010, 12, 3, 22, 4)}