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()

0 ответов

Другие вопросы по тегам