Python表达式评估器类似于Jave Spring框架表达式评估

时间:2018-09-18 14:56:28

标签: python python-3.x

目标

我正在寻找Python替代Jave Spring Framework Expression Evaluation。我的理解是,它类似于.NET LINQ。

这里的目标是带来一种功能,该功能可以从存储在数据库中的字符串定义过滤器,并“查询”内存中的对象。

示例

# The class structure I am dealing with
class Order():
    def __init__(self,var1,var2):
        self.var1 = var1
        self.var2 = var2

class Work():
    def __init__(self, orders):
        self.orders = orders # list of Orders

order1 = Order(var1 = 11, var2 = "type1")
order2 = Order(var1 = 22, var2 = "type2")
order3 = Order(var1 = 33, var2 = "type2")

work = Work([order1,order2,order3])

我希望能够执行类似于

的字符串
 "var1 > 25 & var2=='type2'"
 "var1 IN (11,22) & var2 IN ('type1' OR 'type2')"

详细信息

  • 性能很重要,我将需要一次执行数千万个这样的字符串
  • 不想使用python eval(),因为评估字符串将向普通读者开放,并且我不想允许任何python代码执行
  • 需要丰富的语法以允许执行复杂的查询。类似Spring Framework Expression Evaluation,但在Python或YAQL中却在内存中的自定义对象上
  • 考虑使用jQuery构建字符串的可能性

非常感谢您的想法和建议

0 个答案:

没有答案