Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.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 如何使用moz_sql_解析器和DeepDiff来比较两个sql查询?_Python_Dictionary_Sql Parser - Fatal编程技术网

Python 如何使用moz_sql_解析器和DeepDiff来比较两个sql查询?

Python 如何使用moz_sql_解析器和DeepDiff来比较两个sql查询?,python,dictionary,sql-parser,Python,Dictionary,Sql Parser,我使用moz_sql_解析器来比较两个sql查询。和DeepDiff以查看两个查询之间的差异 我想要一本不同种类的字典,如下所示,以便更好地进行比较 from moz_sql_parser import parse import json from jsondiff import diff from deepdiff import DeepDiff import pprint sqlr = "SELECT distinct c.nome FROM compositor c, faixas f,

我使用moz_sql_解析器来比较两个sql查询。和DeepDiff以查看两个查询之间的差异

我想要一本不同种类的字典,如下所示,以便更好地进行比较

from moz_sql_parser import parse
import json
from jsondiff import diff
from deepdiff import DeepDiff
import pprint

sqlr = "SELECT distinct c.nome FROM compositor c, faixas f, artista ar, album a, fx_comp fx WHERE fx.compositor = c.compositor_id AND fx.faixa_id = f.faixa_id AND f.album = a.album_id AND (a.titulo = 'Help!' OR a.titulo = 'Abbey Road') AND ar.nome = 'The Beatles' AND f.faixa_numero < 6 Order By c.nome asc;"
sqlr1 = "SELECT c.nome FROM artista ar, album a, faixas f, compositor c,  fx_comp fx WHERE fx.compositor = c.compositor_id AND fx.faixa_id = f.faixa_id AND f.album = a.album_id AND (a.titulo = 'Help!' OR a.titulo = 'Abbey Road') AND ar.nome = 'The Beatles' AND f.faixa_numero < 6 Order By c.nome desc;"
sqlr2 = "SELECT * FROM (SELECT * FROM ALBUM as x ,ARTISTA as pto WHERE ARTISTA.ARTISTA_ID = ALBUM.ARTISTA AND ARTISTA.ARTISTA_ID = 4) AS B;"

#print(json.dumps(parse(sql8), sort_keys=True, indent=4))
data1 = json.loads(json.dumps(parse(sqlr.lower()),sort_keys=True))
data2 = json.loads(json.dumps(parse(sqlr1.lower()),sort_keys=True))

pprint.pprint(data1)
print('###################################')
#data3 = diff(data2, data1)
ddiff = DeepDiff(data1,data2, ignore_order=True)
pprint.pprint((ddiff))
print(ddiff['type_changes']["root['select']['value']"])
#print(type(data1['select']['value']))
但它一直在变化。所以字典的结构从来都不一样,这使得解析变得一团糟

我想以如下方式转换数据1和数据2:

[['Table1','Alias','variable1associatedwithtable1','variable1associatedwithtable12',],
['Table2name','Alias','variable1associatedwithtable2name','variable1associatedwithtable2name']]
用于表及其自身的变量,包括使用的别名

[['Table2name','function','variable_associated_with_table_name'],

[['Table2name','function','variable_associated_with_table_name'],