从字典构建搜索查询?
build search query from a dict?
假设我有字典 { k1 : v1, k2 : v2 },我如何从中构建查询。
我不能直接做:
.search( (Query().k1 == v1) & (Query().k2 == v2))
因为字典也可能是:
{k2:v2} OR {k1:v1, k3:v3} OR ........
TinyDB 实例上的 search() 函数实际上将谓词作为参数,而 Query 实例在幕后创建这些谓词。要运行更高级的搜索,您可以为 TinyDB 提供您自己的谓词。
from tinydb import Query,TinyDB
def predicate(obj,requirements):
for k,v in requirements.items():
if k not in obj or obj[k]!=v:
return False
return True
tiny = TinyDB('db.json')
requirements={
'a':1,
'b':3
}
print(tiny.search(lambda obj: predicate(obj,requirements)))
假设我有字典 { k1 : v1, k2 : v2 },我如何从中构建查询。 我不能直接做:
.search( (Query().k1 == v1) & (Query().k2 == v2))
因为字典也可能是:
{k2:v2} OR {k1:v1, k3:v3} OR ........
TinyDB 实例上的 search() 函数实际上将谓词作为参数,而 Query 实例在幕后创建这些谓词。要运行更高级的搜索,您可以为 TinyDB 提供您自己的谓词。
from tinydb import Query,TinyDB
def predicate(obj,requirements):
for k,v in requirements.items():
if k not in obj or obj[k]!=v:
return False
return True
tiny = TinyDB('db.json')
requirements={
'a':1,
'b':3
}
print(tiny.search(lambda obj: predicate(obj,requirements)))