所以假设我们有这样一个简单的查询:
Select a.col1, b.col2 from tb1 as a inner join tb2 as b on tb1.col7 = tb2.col8;
结果应该是这样的:
tb1 col1
tb1 col7
tb2 col2
tb2 col8
我尝试使用一些 python 库来解决这个问题:
- 即使只使用
sqlparse
提取表也可能是一个大问题。例如 ,这本 官方书籍根本无法正常工作。
2)使用正则表达式似乎很难实现。
3)但后来我发现 了这个,这可能会有所帮助。但是问题是我无法连接到任何数据库并执行该查询。
有任何想法吗?
原文由 Rocketq 发布,翻译遵循 CC BY-SA 4.0 许可协议
真的,这不是一件容易的事。您可以使用词法分析器(在此示例中为 ply )并定义多个规则以从字符串中获取多个标记。以下代码为 SQL 字符串的不同部分定义了这些规则,并将它们重新组合在一起,因为输入字符串中可能存在别名。结果,您会得到一个字典(
result
),其中不同的表名作为键。