
比如针对 Oracle 中的 SQL 语法结构 sql = "select a.first_name ename,temp.ryxm cname,temp.bm from table1 a,table2 temp where a.manager_id=temp.id;"
问下 python 中有没有现有比较成熟的用于解析 sql 的第三方库( sqlparse 好像不太行),最好是支持多种数据库 SQL 语法格式识别的。
比如解析以上 Oracle 语法 sql 能够区分出类似效果?? 表名:["table1","table2"] 列名:{"table1":"first_name","table2":"ryxm","table2":"bm"}
1 faketemp OP |
2 tabris17 2016-04-24 11:52:51 +08:00 |
| /td> | 3 faketemp OP @tabris17 它好像文档不太全 没找到需要的功能哈 能针对以上的例子请教演示下用法不??? |
4 kqz901002 2016-04-24 18:22:33 +08:00 sqlalchemy ? |
5 xuyuheng0905 2016-04-24 19:56:55 +08:00 sqlalchemy ? |
6 xuyuheng0905 2016-04-24 19:57:11 +08:00 sqlalchemy |
7 faketemp OP |
8 pynix 2016-04-24 21:33:10 +08:00 没有官方驱动吗? |
10 aiver 2016-04-25 09:01:47 +08:00 你这已经不叫解析 sql 语句了,你想解析的是 sql 里面的字段,还不如自己写了提取 |
11 SmiteChow 2016-04-25 17:59:36 +08:00 @xuyuheng0905 sqlalchemy 不会去解析 raw sql 的,连更底层的 mysql - python 都不会,解析 sql 语句是在 server 端完成的 |
12 xuyuheng0905 2016-04-25 21:59:06 +08:00 刚下班,想问一下,你想做什么功能呢? |
13 faketemp OP @xuyuheng0905 从某 oracle 系统导出好多 excel 文件(数量还会增加,数据来源别处不是自己导的),格式是 sheet2 的 A1.value 就是本工作簿数据来源 SQL ,现在想统计出每个工作簿数据都对应使用了 oracle 数据库中的哪些表所以才想从每个工作簿中取出 sql 语句,从 sql 语句中解析出来表名、字段名等信息 不知道我有没有说明白… |
14 xuyuheng0905 2016-04-26 22:43:58 +08:00 @faketemp 也就是说,你要读取这些 SQL ,然后做分析, SQL 的语法分析?之前看过一篇 blog ,有个人干过这个事情。 http://zh.lucida.me/blog/on-learning-algorithms/ ,这方面没有研究过,但是我觉得你可以从这个思路开始入手。 |
15 faketemp OP @xuyuheng0905 十分感谢,看来要自己动手了 Python 从 Hello world 到 Import world ,还有很长的路要走 O(∩_∩)O~ 参考这一篇文章看看吧,[http://www.tuicool.com/articles/jIZr2q2]( http://www.tuicool.com/articles/jIZr2q2) |
16 faketemp OP @xuyuheng0905 我终于找到了几近完美的解决方案,遗憾的是官方没有提供 python 库 看看这里 http://www.sqlparser.com/products.php  |
17 xuyuheng0905 2016-04-27 08:03:33 +08:00 via iPhone @faketemp 不错! |
18 sizeoftank 2016-04-27 16:37:42 +08:00 我用 Python Lex-Yacc 撸过一个~ 用在目前公司项目里后闭源了 - - |
19 vvvvxxxx 2018-08-30 09:29:25 +08:00 请问楼主这个问题解决了吗,因为最近也要解析 sql 语句获取表名,没有什么思路,希望楼主能给个方向 |
20 moon1223 2020-02-26 15:20:21 +08:00 同问楼主,这个问题解决了吗,因为最近也要解析 sql 语句获取表名,没有什么思路,希望楼主能给个方向 |
21 faketemp OP |