首页 >数据库 >mysql教程 >如何从 SQLite 查询中高效地检索字典?

如何从 SQLite 查询中高效地检索字典?

DDD
DDD原创
2025-01-03 22:57:431019浏览

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