问题描述
您好,我正在开发一个 Firebase 查询构建器。它基本上是一个请求属性并返回带有完整查询的字符串的函数。它必须被执行并且应该返回数据。
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()))
你有什么提示我该如何改进它?提前致谢。
解决方法
主要问题是字符串处理错误。
代替:
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)