如何比较 SQL 文件和包在 Python 和 return 中的真假?

How to compare SQL files and Packages in Python and return True or False?

因此,我尝试使用来自 difflib 的 Differ 和 filecmp。这是我到目前为止所做的:

def comparesqlpkg(pkg1Name, pkg2Name):
    d = Differ()
    if d.compare(open(pkg1Name, 'r').readlines(), open(pkg2Name, 'r').readlines()):
    #if filecmp.cmp(pkg1Name, pkg2Name):
        print("SAME content.")
        return True
    else:
        print("DIFFERENT content.")
        return False

我想让代码检查这两个文件,看看它们是否相同 return True/False。问题是在 Oracle 端可能会发生一些重新格式化,这会修改第二个文件的格式。我需要它以这样一种方式来忽略它,以便 运行 相同代码(不同的制表符空格等)的两个脚本仍会产生相同的结果。

示例 SQL1(本地存储库):

function fn_get_number(
 in_src_amt in varchar2)
RETURN NUMBER;

示例 SQL2(由 ORACLE 数据库重新格式化):

FUNCTION FN_GET_NUMBER
(
     IN_SCR_AMT        IN        VARCHAR2
)
RETURN NUMBER;

删除所有空格和换行符,转换为小写,然后进行比较。

def transform(s):
    return s.replace(' ','').replace('\n','').lower()
...
if transform(open(pkg1name,'r').read()) == transform(open(pkg2name,'r').read()):