我正在为从 SQL 和其他来源提取数据的数据库构建查询引擎。对于正常用例,用户可以使用 Web 表单,用户可以使用选择和范围输入指定过滤参数。但是对于高级用例,我想指定一个过滤方程框,用户可以在其中键入
和,或
嵌套括号
变量名
, <, =, != 运算符
所以过滤方程可能看起来像:
((age > 50) or (weight > 100)) and diabetes='yes'
然后将解析此输入,检测输入错误(不存在的变量名称等)并基于它构建 SQL Alchemy 查询。
我之前看到过一篇关于类似问题的帖子https://stackoverflow.com/a/1395854/315168
Python http://navarra.ca/?p=538似乎存在几种语言和迷你语言解析器
但是,是否存在针对我的问题的开箱即用解决方案或接近解决方案的任何软件包?如果不是,那么在 Python 中构造此类查询解析器和构造函数的最简单方法是什么?