Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何使用sqlparser将SQL查询和子查询解析为python_Python 2.7 - Fatal编程技术网

Python 2.7 如何使用sqlparser将SQL查询和子查询解析为python

Python 2.7 如何使用sqlparser将SQL查询和子查询解析为python,python-2.7,Python 2.7,要解析sql连接查询,请选择sub query into python。我正在使用sqlparse库。但我无法解析子查询。如何解析整个查询 e、 g: 我无法解析此从res\u partner中选择名称,其中id=1子查询。不太优雅,但可以: import sqlparse from sqlparse.sql import Where, Comparison, Parenthesis query = """ select id,fname,lname,address from

要解析sql连接查询,请选择sub query into python。我正在使用sqlparse库。但我无法解析子查询。如何解析整个查询

e、 g:


我无法解析此
从res\u partner中选择名称,其中id=1
子查询。

不太优雅,但可以:

import sqlparse
from sqlparse.sql import Where, Comparison, Parenthesis

query = """
select
    id,fname,lname,address
from
    res_users as r
    left join
        res_partner as p
    on
        p.id=r.partner_id
where
    name = (select name from res_partner where id = 1)"""

query_tokens = sqlparse.parse(query)[0]
where = next(token for token in query_tokens.tokens if isinstance(token, Where))
condition = next(token for token in where.tokens if isinstance(token, Comparison))
subquery = next(token for token in condition.tokens if isinstance(token, Parenthesis))
print subquery
印刷品:

(select name from res_partner where id = 1)

这个库可以解析和生成SQL

(select name from res_partner where id = 1)