E71:Python-MySQLdbでDictCursorを使ってみる の変更点
Top / E71:Python-MySQLdbでDictCursorを使ってみる
- 追加された行はこの色です。
- 削除された行はこの色です。
- E71:Python-MySQLdbでDictCursorを使ってみる へ行く。
- E71:Python-MySQLdbでDictCursorを使ってみる の差分を削除
*E71:Python-MySQLdbでDictCursorを使ってみる [#faae254d] PythonでMySQLdbを使うときに、一番最初に使うカーソルクラスは、実は -MySQLdb.cursors.Cursor だったりします。 まあ、デフォルトでも普通に使えますが、fetchした後、selectした値を配列の番号指定みたいな使い方をしなきゃならないんで、場合によってはちょっと使いにくいことがあるかと思います。(場合によっては都合はいいですが笑) まあ、たとえば、標準のCursorクラスだと、こんな使い方しますね~ >>> conn = MySQLdb.connect(db="test_db", host="127.0.0.1", ・・・) >>> cur = conn.cursor() >>> cur.execute('select * from test') 2L >>> rows = cur.fetchall() >>> for row in rows: ... print row[0] ... print row[1] ... taro taropass この、「'''print row[0]'''」ってところが、いまいちに感じる人もおおいはず!・・・?笑 「つーか、大体「標準のCursorクラス」ってどこで指定してんだよ」 って思う方もいらっしゃるでしょう。(いませんかね~) ***Cursorクラスの指定の仕方 [#v1a94341] Cursorクラスの指定の仕方は、非常に簡単です。 conn.cursor() のメソッドの中に、Cursorクラスを指定してあれげればいいだけです。 ちなみに、Cursorクラスって、実はいくつかあります。簡単に紹介します。 |クラス名|概要| |MySQLdb.cursors.BaseCursor|カーソルオブジェクトのベースクラス| |MySQLdb.cursors.Cursor|デフォルトで使用されるカーソルクラス&br;メソッドの引数を省略すると、デフォルトで使用される。| |MySQLdb.cursors.DictCursor|辞書型のように結果を返すカーソルクラス| まあ、他にもカーソルクラスっていくつかあるので、興味がある場合、当記事の最下部の外部リンクの「MySQLdb User's Guide」を見てみてください。 ***DictCursorを使ってみる。 [#u5123bed] 百聞は一見にしかず。 早速使ってみましょう。つーか、使用例は以下のとおり。 まずは、MySQLdbインポートして、接続します。 >>> import MySQLdb >>> conn =MySQLdb.connect(db="test_db", host="127.0.0.1",・・・) 次に、cursor()メソッドの引数に、「'''MySQLdb.cursors.DictCursor'''」として呼び出します。 >>> cur = conn.cursor(MySQLdb.cursors.DictCursor) すると、もうDictCursorオブジェクトが出来上がって、curに入ります。あら簡単笑 して、SQLを実行してみます。 >>> sql = 'select * from board' >>> cur.execute(sql) 4L >>> 実行結果を1行だけ取ってみます。 >>> cur.fetchone() {'comment': 'aaa', 'email': 'hiroooo000@gmail.com', 'uptime': datetime.datetime(2009,8,4,1,57,33), 'id': 1L, 'name': 'testuser'} すると、こんな感じで取れます。 こりゃあ便利だ笑 ***なんとなくまとめ [#b100c593] 標準のCursorクラスは、バッチ処理みたいないっきに値をとってきてぐるぐる回す、ようなのに向いていて、DictCursorクラスは、いわゆる業務処理みたいなので使うと便利なのかな~ ***外部リンク [#f2bdb096] -MySQLdb User's Guide&br; http://mysql-python.sourceforge.net/MySQLdb.html このサイトは、MySQLdbを使うんだったら、1回は読んだほうがいいですよ~