MOD: improved the table comparison, removed buggy code

This commit is contained in:
JohnE 2016-03-02 15:18:56 -08:00
parent 5b683cb108
commit 9f8b791bca
1 changed files with 14 additions and 18 deletions

View File

@ -191,33 +191,29 @@ class FingerprintDB:
# if exists, compare each field
# else, add to unknown tables...or do a fuzzy compare (look at number of fields, field names)
diff_num = 0
diff_total = 0
all_total = 0
diff_total = 0 # total number of different properties (from within a table)
all_total = 0 # total number of properties (from the entire database comparison)
for tableName in fp.tables.keys():
try:
logging.info("[[ Comparing Table: " + tableName + " ]]")
table = self.tables[tableName]
if (table):
print "***__DBMD5Compare:: hash1=={}, hash2=={}".format(fp.tables[tableName].hash(), table.hash())
logging.info("__DBMD5Compare:: hash1=={}, hash2=={}".format(fp.tables[tableName].hash(), table.hash()))
if not (fp.tables[tableName].hash() == table.hash()):
logging.info("*** Hash difference 1:{}!={}".format(fp.tables[tableName].hash(), table.hash()))
(total, diff_num) = self.__CompareTable(fp.tables[tableName], table)
all_total += total
diff_total += diff_num
else:
all_total += 10
logging.info("Table {} is IDENTICAL (to json fingerprint)".format(tableName))
else:
self.__FuzzyTable()
all_total += 10 # increment the total tables compared
logging.info("__DBMD5Compare:: tableName=={} IDENTICAL".format(tableName))
# table found in only one database (fingerprint)
except KeyError as ex:
# get the number of fields from the other table to add to the diff_total
all_total += 10
diff_total += 10
logging.info("Table {} not EXISTS (to json fingerprint)".format(tableName))
logging.info("__DBMD5Compare:: tableName=={} NOT FOUND".format(tableName))
diff_total += 10 # increment the total of different properties
all_total += 10 # increment the total tables compared
self.__FuzzyTable() # TODO: try to detect table name changes, look for same properties
logging.info("diff_total=={}, all_total=={}".format(diff_total, all_total))
print "***__DBMD5Compare:: all_total=={}, diff_total=={}".format(all_total, diff_total)
logging.info("__DBMD5Compare:: all_total=={}, diff_total=={}".format(all_total, diff_total))
if (diff_total > 0):
if (diff_total == all_total):
@ -256,12 +252,12 @@ class FingerprintDB:
totals = prop_total_count + fields_total_count
diff_total = prop_error_count + fields_diff_count
print ("***__CompareTable:: prop_total_count=={}, fields_total_count=={}, totals=={}".format(prop_total_count, fields_total_count, totals))
print ("***__CompareTable:: prop_error_count=={}, fields_diff_count=={}, diff_total=={}".format(prop_error_count, fields_diff_count, diff_total))
logging.info("__CompareTable:: prop_total_count=={}, fields_total_count=={}, totals=={}".format(prop_total_count, fields_total_count, totals))
logging.info("__CompareTable:: prop_error_count=={}, fields_diff_count=={}, diff_total=={}".format(prop_error_count, fields_diff_count, diff_total))
return (totals, diff_total)
# look at un-identified tables and try to match fields by their properties
def __FuzzyTable():
def __FuzzyTable(self):
return
#