首頁 >資料庫 >mysql教程 >如何從 SQLite 查詢中檢索字典而不是清單?

如何從 SQLite 查詢中檢索字典而不是清單?

Susan Sarandon
Susan Sarandon原創
2025-01-03 20:33:40149瀏覽

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

從SQLite 查詢中擷取字典

從SQLite 資料庫擷取資料通常會產生一個列表列表,其中每個內部列表對應一個資料庫中的行。雖然此方法很實用,但透過列名存取資料可能不方便。本文探討了從 SQLite 查詢中取得字典的替代方法,提供了一種更直觀的資料處理方式。

Row Factory

row_factory 函數可讓您指定如何傳回結果行。透過設定為dict_factory,可以將查詢結果轉換為字典,其中key為列名,value為列值。以下是一個範例:

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

另一個選項是使用 sqlite3.Row 類型作為行工廠。它以最小的記憶體開銷提供基於索引和不區分大小寫的基於名稱的列存取:

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

使用sqlite3.Row,您可以透過索引或名稱存取列值:

row = cursor.fetchone()
value_by_index = row[0]
value_by_name = row["col_name"]

結論

row_factory 函數和sqlite3.Row類型提供了從 SQLite 查詢中檢索字典的有效方法,使得按列名稱處理資料變得更容易。兩者之間的選擇取決於具體要求和偏好。

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

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