2012-11-14 9 views

答えて

9

sqlite3モジュールのドキュメントのRow Objectsを参照してください。 sqlite3.Row row_factoryを使用すると、通常のタプルよりもわずかに強力なオブジェクトが返されます。少しオーバーヘッドが高いので、デフォルトの動作ではないと思います。このため

+1

んが本当の高いオーバーヘッドは、docによると:_ "行は、インデックスベースと大文字と小文字を区別しない名前の両方を提供します**メモリのオーバーヘッドがほとんどない**カラムへのアクセス**これはおそらく独自のカスタム辞書ベースのアプローチやdb_rowベースのソリューションより優れています。 "_ http://docs.python.org/3/library /sqlite3.html#sqlite3.Connection.row_factory – JeromeJ

+0

これは意味があります - 私はコードを見ていませんが、おそらく '__getitem__'を使って列名を対応するインデックスにマップするだけです。 – Iguananaut

8

は、SELECTをやったときに、常に明示的な列名を使用することを推奨されていない:

c.execute("SELECT color, fluffiness FROM table") 
for row in c.fetchall(): 
    print row[0]   # <-- is always guaranteed to be the color value 
    print row[1] 
+1

これも良い答えです。またはそれらのいくつかの組み合わせ。それは大規模なテーブルのすべての列を取得しているあなたの痛みになることができますが。 – Iguananaut

関連する問題