我正在使用带有mysql数据库的python。 我在该数据库中有一个表,用于存储要运行的函数的名称 我还想添加一种可能性,将变量存储在表中,动态检索它们并将它们传递给函数。 但是当存储在db中时,参数是字符串,我不知道如何将它们转换为变量名称以传递给函数。
例如,让我们考虑以下示例,其中表包含:
module function arguments (<--columns names)
indicators scrape_web datapoints
让我们说我用mysql lib检索数据并将其保存在dict中,例如:
script:{'module': 'indicators',
'function': 'scrape_web',
'arguments': 'datapoints'}
我可以检索模块和函数名称,并运行没有这样的参数的函数:
module = __import__(script['module'])
func = getattr(module, script['function'])
func()
但是,如果我想将参数传递给函数,以便函数运行func(datapoints)
func(script['arguments'])
显然不起作用。
所有人都非常感谢。
答案 0 :(得分:1)
假设脚本[&#39; arguments&#39;]返回一个字符串,该字符串是变量的名称。
func(eval(script['arguments']))
对于多个参数,使用脚本[&#39; arguments&#39;]拆分字符串.split(&#34;,&#34;) 并为列表中的每个元素使用eval。
如果您希望它尽可能通用:
args = script(['arguments']).split(",")
fstr = 'func('
for i in range(0,len(args)) : fstr +='eval(args['+str(i)+']),'
fstr = fstr[:-1]
#to remove the trailing comma
fstr += ')'
eval(fstr)