SQL请求无法使用sqlparse解析correyle

时间:2017-11-20 15:21:29

标签: python sql parsing

我有一个很大的请求,我尝试用python程序解析它,使用sqlparse。

以下是代码:

import sqlparse

req1 = """select qty, end_date from ITEMS as (q,e)
where iId = iid
if ((q-qty) == 0){
  update ITEMS set end_date = now,qty = q-qty
  where iId = iid
}else {
  update ITEMS set qty = q-qty
  where iId = iid
} insert into BUY_NOW values (uid,iid,qty)"""

res = sqlparse.parse(req1)
cpt = 0
for i in res[0].tokens:
    print (i)
    cpt+=1
    print(cpt)

这是输出:

select
1

2
qty, end_date
3

4
from
5

6
ITEMS as (q,e)
7


8
where iId = iid
if ((q-qty) == 0){
  update ITEMS set end_date = now,qty = q-qty
  where iId = iid
}else {
  update ITEMS set qty = q-qty
  where iId = iid
} insert 
9
into
10

11
BUY_NOW
12

13
values
14

15
(uid,iid,qty)
16

正如您所看到的,如果根本没有解析,它看起来像请求的中间部分。 是否有可能中间部分sql不正确?我没有数据库,所以我无法尝试,我只有请求。 或者您认为问题来自sqlparse?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

那个sql看起来很可疑,但我并不聪明。

您不必让数据库尝试一下。如果它意味着与MySQL合作,那么你可以使用正确的列名快速添加几个表,然后看看如果你尝试执行该查询,MySQL是否会嚎叫。我认为你甚至不需要试用数据。