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