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

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

DDD
发布: 2025-01-03 22:57:43
原创
998 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板