2011-12-24 8 views
4

をフェッチカーソルが、私が実行します。のPython、MySQLとMySQLデータベースの接続にクエリステートメントを実行した後のマップ

rows = cursor.fetchall() 

これは、配列の配列を提供します。私は各辞書が私のテーブルの要求された列名からキーを取り出し、テーブルから値を関連付ける辞書の配列を持っていたいと思います。

どうすればよいですか?

+2

タプルのリストを返します。配列は関与していません。また、*マップ*はありません。それらはディクテーションです。 – nosklo

答えて

14

まあ、あなたはあなたが使用しているmysqlライブラリについて言及するのを忘れました。

  • (私は、それは確かに最高の一つですお勧めします)oursqlを使用している場合、oursql's DictCursorを使用しています。例:

    conn = oursql.connect(...) 
    curs = conn.cursor(oursql.DictCursor) 
    
  • MySQLdbを使用している場合(?なぜ)MySQLdb's DictCursorを使用してください。例:それをやって

    conn = MySQLdb.connect(..., cursorclass=MySQLdb.cursors.DictCursor) 
    curs = conn.cursor() 
    

はあなたの各行に対してdictsを返すカーソルを提供します。あなたの質問に重複したrownamesを持たないことを忘れないでください。

+1

ちょうどこれも見つかったので、すぐに+1して受け入れてください。サンプル構成: 'カーソル= db.cursor(MySQLdb.cursors.DictCursor)' – SK9

+10

'MySQLdb.connect(...、cursorclass = MySQLdb.cursors.DictCursor)' MySQLdbにはカーソル属性がないので動作しません_after_接続が行われます。 SK9sのバージョン 'cursor = db.cursor(MySQLdb.cursors.DictCursor)'は動作します。システムMySQLdbでUbuntu 10.4でテストされました。 – jeorgen

+0

@jeorgen公式ドキュメントのhttp://mysql-python.sourceforge.net/MySQLdb.html#mysqldbにあるように、 'cursorclass'キーワードパラメータを' connect() '呼び出しに渡すことができます。それはここで働く。もしあなたが失敗しているのであれば、他の理由があるかもしれません。別の質問をしてください。 – nosklo

関連する問題