【问题标题】:Pyrebase query builder python- exec() issuePyrebase 查询生成器 python-exec() 问题
【发布时间】:2021-05-24 14:32:26
【问题描述】:

您好,我正在开发一个 firebase-query builder。它基本上是一个请求属性并返回包含完整查询的字符串的函数。它必须被执行并且应该返回数据。

def Search(**kwargs):
    base="db.child('vocabulary')"

    #AMOUNT OF DATA ENTERED.
    entry_length=(len(kwargs.items()))

    #LAST ATRIBUTTE ENTERED
    last_atributte=list(kwargs.items())[entry_length-1]


    #FOR EVERY ATTRIBUTE, ADD IT TO THE ROOT. IF IT'S THE LAST->CLOSE THE QUERY
    for x,y in kwargs.items():

        if y!=last_atributte[1]:
            base+=".child('{}')".format(y)
        else:
            base+=".child('{}').get().val()".format(y)
    print(base)
    return (base)


query=Search(word_type="verbs",word="play")
print(exec(query))

在这个例子中,函数返回这个字符串: db.child('vocabulary').child('verbs').child('play').get().val()

如果我在脚本上面运行字符串,它会返回数据,但是当我使用内置的 exec() 执行它时,会返回 None: print(exec(db.child('vocabulary').child('verbs').child('play').get().val()))

您有提示我该如何改进它吗?提前谢谢你。

【问题讨论】:

    标签: python firebase pyrebase


    【解决方案1】:

    主要问题是字符串处理错误。

    代替:

    query=Search(word_type="verbs",word="play")
    print(exec(query))
    

    相当于:print(exec(query))。应该是:

    query=Search(word_type="verbs",word="play")
    query="print({})".format(query)
    exec(query)
    

    【讨论】:

      猜你喜欢
      • 2018-11-16
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 2021-01-10
      • 2017-08-13
      • 2015-08-06
      • 2021-08-11
      • 1970-01-01
      相关资源
      最近更新 更多