如何使用“;difflib”;在Linux中使用python的命令?

如何使用“;difflib”;在Linux中使用python的命令?,python,linux,Python,Linux,我有两个SQL文件,一个是old.SQL,另一个是new.SQL 假设old.sql包含一个表,其中包含三个字段:Emp_Id、名称和地址以及存储在old.sql中的数据,如下所示: Insert into table1 values (101 ,"a", "xyz"); Insert into table1 values (102 ,"b", "pqr"); Insert into table1 values (101 ,"a", "xyz123"); Insert into table1

我有两个SQL文件,一个是old.SQL,另一个是new.SQL

假设old.sql包含一个表,其中包含三个字段:Emp_Id、名称和地址以及存储在old.sql中的数据,如下所示:

Insert into table1 values (101 ,"a", "xyz");
Insert into table1 values (102 ,"b", "pqr");
Insert into table1 values (101 ,"a", "xyz123");
Insert into table1 values (102 ,"b", "pqr");
然后,我将“a”地址“xyz”更改为“xyz123”,并将该数据保存在新的.sql文件中。现在,新的.sql文件包含如下数据:

Insert into table1 values (101 ,"a", "xyz");
Insert into table1 values (102 ,"b", "pqr");
Insert into table1 values (101 ,"a", "xyz123");
Insert into table1 values (102 ,"b", "pqr");
当我像这样使用difflib命令时:

difflib old.sql new.sql

它给出了行之间的差异,但我只需要更新的数据,比如
xyz123

问题是
diff
不知道行的哪一部分定义为“数据”,哪一部分定义为“语法”。如果你做了一个行差异,你会得到不同的部分

Insert into table1 values (101 ,"a", "xyz");
Insert into table1 values (101 ,"a", "xyz123");
                                         123"); <-- difference
检查详细差异将取决于文件的语法

def check_difference(line1, line2):
    if line1 == line2: 
        return None

    # Get a list with the cleaned up data fields.
    data1 = get_values_list(line1)
    data2 = get_values_list(line2)

    # Compare each individual field.
    for i in range(len(data1)):
        if data1[i] != data2[i]:
            print('Difference: {} --> {}'.format(data1[i], data2[i]))

def get_values_list(s):
    # Split a line into data fields and remove quotes, etc.
    li = s[s.index('(') + 1 : s.index(')')].split(',')
    return [x.strip(' ').strip('"\'') for x in li]

这是未经测试的,但基本上可以进行比较。它不会读取整个文件,只返回更改的单个数据字段。

但我需要表名、列名和已更改的数据。请告诉我python中是否有可用的逐字比较行的命令。