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

如何從 SQLite 查詢中有效率地檢索字典?

DDD
DDD原創
2025-01-03 22:57:431050瀏覽

How to Efficiently Retrieve Dictionaries from SQLite Queries?

從SQLite 查詢中擷取字典

在您提供的程式碼片段中,您目前正在迭代從SQLite 查詢傳回的原始元組:

db = sqlite.connect("test.sqlite")
res = db.execute("select * from table")

這將傳回表中每行的元組列表,使得有必要手動提取列名並建立字典。然而,SQLite 提供了兩種直接從查詢中取得字典的方法:

1。 row_factory

row_factory 選項可讓您指定用於從每行建立物件的自訂函數。例如,以下函數傳回一個字典:

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

透過為此函數設定row_factory 選項,查詢傳回的每一行都將是字典:

con = sqlite3.connect(":memory:")
con.row_factory = dict_factory
cur = con.cursor()
cur.execute("select 1 as a")
result = cur.fetchone()  # Returns {'a': 1}

2. sqlite3.Row

或者,您可以將row_factory 設定為sqlite3.Row,它提供對列的基於索引和基於名稱的訪問,而無需任何額外的內存開銷:

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row
cursor = con.cursor()
result = cursor.fetchone()  # Returns Row object with attribute-like access

通過使用這兩種方法中的任何一種,您都可以輕鬆地從SQLite 查詢中取得字典或屬性可存取的對象,從而無需手動字典施工。

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

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