我有一个很大的请求,我尝试用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?
感谢您的帮助
答案 0 :(得分:1)
那个sql看起来很可疑,但我并不聪明。
您不必让数据库尝试一下。如果它意味着与MySQL合作,那么你可以使用正确的列名快速添加几个表,然后看看如果你尝试执行该查询,MySQL是否会嚎叫。我认为你甚至不需要试用数据。