首頁 >資料庫 >mysql教程 >如何從 SQLite 查詢中有效率地檢索字典而不是列表?

如何從 SQLite 查詢中有效率地檢索字典而不是列表?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-04 02:18:41788瀏覽

How Can I Efficiently Retrieve Dictionaries Instead of Lists from SQLite Queries?

從 SQLite 查詢取得字典

從 SQLite 資料庫擷取資料涉及取得與行對應的清單。雖然可以使用描述屬性來確定列名稱,但將結果轉換為字典需要額外的工作。

使用 row_factory 的解

row_factory 參數允許自訂行的回傳方式。透過將其設為以遊標和行作為參數並傳回字典的函數,您可以獲得字典而不是列表。

import sqlite3

def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d

con = sqlite3.connect(":memory:")
con.row_factory = dict_factory
cur = con.cursor()
cur.execute("select 1 as a")
print(cur.fetchone()["a"])

使用 sqlite3.Row 的解決方案

SQLite 文件建議使用 sqlite3.Row 類型,它提供對列的高效的基於名稱的存取。將 row_factory 設定為 sqlite3.Row,您可以按名稱索引和存取列。

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row   # add this row
cursor = con.cursor()

以上是如何從 SQLite 查詢中有效率地檢索字典而不是列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn