从 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中文网其他相关文章!