You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TinyDB中查询特定Key?查询返回空结果求解决

解决TinyDB根据嵌套Key查询值的问题

你的问题出在数据库结构和查询方式不匹配:当前数据库里,每个文档的顶级键是"1",目标pid是文档内嵌套对象的键,而你用的Query()[str(pid)]是在查找顶级字段名等于pid字符串的文档,自然找不到结果。

给你两种解决方案:

方案一:适配现有数据库结构查询

遍历所有文档,检查每个文档内的嵌套对象是否包含目标pid:

from tinydb import TinyDB

db = TinyDB('db.json')
pid = 1082685467876675736
pid_str = str(pid)

# 遍历所有文档查找匹配项
target_url = None
for doc in db.all():
    # 遍历文档内的每个键值对(这里只有"1"对应的对象)
    for nested_obj in doc.values():
        if isinstance(nested_obj, dict) and pid_str in nested_obj:
            target_url = nested_obj[pid_str]
            break
    if target_url:
        break

print(target_url if target_url else "未找到对应URL")

方案二:优化数据库结构(推荐)

如果可以修改数据库格式,把pid和url设为文档的直接字段,查询会更高效:
调整后的db.json结构:

{"_default": {
  "1": {
    "pid": "1082685467876675736",
    "url": "https://stackoverflow.com/"
  }
}}

对应的查询代码:

from tinydb import TinyDB, Query

db = TinyDB('db.json')
pid = 1082685467876675736
q = Query()

result = db.get(q.pid == str(pid))
print(result['url'] if result else "未找到对应URL")

内容的提问来源于stack exchange,提问作者mxxim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:05:02