2012-11-14 49 views

回答

9

請參閱Row Objects在sqlite3模塊的文檔中。如果你使用sqlite3.Row row_factory,你會得到一個比普通元組稍強的對象。我認爲它的開銷稍高,因此不是默認行爲。

+1

沒有真正的更高的開銷:_「行同時提供了基於索引的和不區分大小寫的名稱基於列的訪問**幾乎沒有內存開銷**,它可能會比您自己的基於自定義字典的方法或甚至基於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