【问题标题】:build search query from a dict?从字典构建搜索查询?
【发布时间】:2019-08-21 00:33:21
【问题描述】:

假设我有 dict { k1 : v1, k2 : v2 },我如何从中构建查询。 我不能直接做:

.search( (Query().k1 == v1) & (Query().k2 == v2))

因为 dict 也可能是:

{k2:v2} OR {k1:v1, k3:v3} OR ........

【问题讨论】:

    标签: python tinydb


    【解决方案1】:

    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)))
    

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多