我在 SQLite 3 中使用 Python。我有用户输入 SQL 查询,需要为模板语言格式化这些查询的结果。
因此,基本上,我需要使用 DB API 游标(PEP 249)的 .description,但我需要同时获取列名和表名,因为用户经常进行联接。
显而易见的答案,即读取表定义是不可能的——许多表具有相同的列名。
对于 avg(field) 等聚合函数,我还需要对列/表名称进行一些智能行为...
我能想出的唯一解决方案是使用 SQL 解析器并分析 SELECT 语句(叹气),但我还没有找到任何看起来非常好的 Python 的 SQL 解析器?
我没有在文档中找到任何东西,也没有发现任何其他有同样问题的人,所以我可能错过了一些明显的东西?
编辑:要清楚 - 问题是找到 SQL 选择的结果,其中选择语句由用户在用户界面中提供。我无法控制它。正如我上面提到的,阅读表定义没有帮助。