2017-05-16 56 views
0

不知怎的,文檔沒有讓我對它變得太清楚。我無法理解sqlite3連接對象的row_factory方法的用途。sqlite3連接對象的row_factory方法的用途是什麼?

基本上,你可以解釋下面的代碼片段嗎?

def connect_db(): 
    """Connects to the specific database.""" 
    rv = sqlite3.connect(app.config['DATABASE']) 
    rv.row_factory = sqlite3.Row 
    return rv 

回答

1

sqlite3 docs

可以將此屬性改變爲接受光標 和原始行作爲一個元組,將返回真實結果行可調用。 這樣,您可以實現更高級的返回結果方式,例如返回也可以按名稱訪問列的對象。

另外:

如果返回一個元組是不夠的,你需要基於域名的訪問 列時,應考慮設置ro​​w_factory到 高度優化sqlite3.Row類型。 同時提供了基於索引的 和不區分大小寫的基於名稱的訪問,幾乎不存在內存開銷 。它可能會比你自己定製的 基於字典的方法或甚至基於db_row的解決方案更好。

你可以在Flask docs找到同樣的解釋。

所以這行:

rv.row_factory = sqlite3.Row 

設置row_factory給可調用sqlite3.Row,其純元組轉換成更有用的對象。所以現在,當你從你的數據庫中取出行時,你將不會得到一個普通的Python tuple,而是一個特殊的對象,它使得它更容易處理(例如,允許你使用名稱訪問列,而使用普通元組(即元組)會讓你使用編號索引)。

+0

我閱讀了文檔。但是這並沒有讓我明白。你能解釋一下這個片段嗎? –

+1

@VaishMK什麼不清楚?解釋是相當直接的,所以你將不得不詳細說明你不明白的東西。 –

相關問題