我正在解决的问题:我正在让用户自由地制定条件和行动来制定规则,同时将数据插入数据库并评估这些条件和行动,我想不出任何其他因素使用eval,我为此目的创建的数据结构的一个例子是
action_var = ""
a_hash = {"condition":a_condition,
"action":a_hash}
a_condition ={"param":"abc",
"operator":">",
"value":"cde"}
a_action = {"param":action_var,
"operation":"=",
"value":"action
所以我的计划是从用户获取条件id并从用户获取操作ID,然后使用eval来评估表达式。
帮助:我正朝着正确的方向前进,是否有其他方法可以做到这一点?
P.S:我不能在数据库上使用触发器,我有点使用lmdb的orm包装器。所以我在基级使用write命令。
编辑:我希望有多个条件,带和/或混合,带括号。
由于
答案 0 :(得分:2)
您无需使用eval
。将这些运算符映射到函数,然后将函数应用于参数。考虑:
>>> import operator
>>> operators = {}
>>> operators['>'] = operator.gt
>>> operators['>'](*[1, 2])
False
>>> 1 > 2
False