從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中文網其他相關文章!