Python-Dedupe удаляет кластерные дубликаты в результате
Сайт используется для справки:
https://github.com/dedupeio/dedupe-examples/blob/master/pgsql_example/pgsql_example.py
Я пробовал пример Python Dedupe из Mysql: Программа работает нормально, однако я заметил ошибку в данном результате
So Number of Clustered dupes is 841
Это мой запрос, который получает все строки из базы данных:
c2.execute('SELECT * FROM tablename')
data = c2.fetchall()
print len(data)
## gives me 3335 rows
Теперь после того, как данные проходят через процесс ниже:
full_data = []
for cluster_id, (cluster, score) in enumerate(clustered_dupes):
for record_id in cluster:
for row in data:
if record_id == int(row[0]):
row = list(row)
row.insert(0,cluster_id)
row = tuple(row)
full_data.append(row)
Когда я пытаюсь напечатать следующее в консоли:
print(len(full_data))
## gives me 2548 rows
Число Дубликатов составляет около 841, это программа, удаляющая эти записи "841" и затем добавляющая в новую таблицу, возможно ли, что я могу узнать исходное количество строк с их кластерными идентификаторами в новой таблице, то есть новая таблица содержит столько же строк, сколько в исходной таблице (3335)
Вот запрос Sql, который следует (для справки):
columns = "SELECT column_name FROM information_schema.columns WHERE table_name = '' "
c2.execute(columns)
column_names = c2.fetchall()
column_names = [x[0] for x in column_names]
column_names.insert(0,'cluster_id')
c2.execute('DROP TABLE IF EXISTS tablename')
field_string = ','.join('%s varchar(200)' % name for name in column_names)
c2.execute('CREATE TABLE tablename (%s)' % field_string)
con2.commit()
num_cols = len(column_names)
args_str = ','.join(str(x) for x in full_data)
lst = args_str.replace('L','')
values = "("+ ','.join(x for x in column_names) +")"
print(len(lst))
#c2.execute("INSERT INTO tablename %s VALUES %s" % (values, lst))
con2.commit()
con2.close()
con.close()