你好,我想通过TinyDB获得一个特定的密钥,但我只得到一个空的结果。
下面是我的db的一个简单例子:
{"_default": {
"1": {
"1082685467876675736": "https://stackoverflow.com/"
}
}}
字符串
在这里,我试图获取特定pid的url(在本例中是https://stackoverflow.com/
):
db = TinyDB('db.json')
pid = 1082685467876675736
url= db.get(Query()[str(pid)])
print(url)
型
这将返回一个空结果。请注意:我从来不知道URL。所有的查询是pid。
我会感激任何帮助:)
1条答案
按热度按时间k4emjkb11#
您要完成的是通过键名查找一个条目。但是数据库中的查询主要是为了查找特定键上的值而构建的。
我想你有两个选择
1.重新设计数据库模式
如果pid是你要查询的重要值,不要将它存储为键,而是将它存储为值;就像这样:
字符串
然后,您可以使用以下命令轻松查询此文档:
型
2.使用
exists()
查询由于NoSQL数据库的性质,并不是每个文档看起来都一样。您可以随时从某些文档中添加或删除密钥。也就是说,可能需要选择具有(或不具有)特定密钥文档子集。
作为一个例子考虑一个带有博客文章的数据库。其中一些有注解(所以文档在键
comments
下得到了注解列表)。如果你对带有评论的帖子感兴趣,你可以查询它们,而不管comments
键的内容(这是非常有用的)。在您的示例中,这个
pid
可能不会将您的数据分组。我想这是每个文件都有不同和存在的价值。因此,exists()
不是本文的目的,也远非最佳实践。但是,无论如何,这都应该工作:
型