Python 如何使用moz_sql_解析器和DeepDiff来比较两个sql查询?
我使用moz_sql_解析器来比较两个sql查询。和DeepDiff以查看两个查询之间的差异 我想要一本不同种类的字典,如下所示,以便更好地进行比较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,
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'],