Я пытаюсь получить большой набор данных с сервера SQL и дедуплицировать информацию, используя библиотеку дедупликации Python. Я использую pyodb c в качестве соединителя базы данных, но я не могу понять, как получить данные в правильном формате, используя SQL Server. Работает нормально на MySQL, но без чтения строки Dict форматирование данных ускользает от меня. В настоящее время я вижу следующую ошибку:
TypeError: индексы строк должны быть целыми числами, а не str
Вот код, который пытается построить данные:
cur = con.cursor()
print("\n\nExecuiting TOMIS Select")
cur.execute(TOMISSelect)
print("\nSelect Complete")
colHeader = [column[0] for column in cur.description]
temp_d = {0:tuple(colHeader)}
temp_data = {(i+1): row for i, row in enumerate(cur)}
temp_d.update(temp_data)
if os.path.exists(training_file):
print("\nReading labeled examples from ", training_file)
with open(training_file) as tf:
deduper.prepare_training(temp_d, tf)
else:
print("\nManual Training")
deduper.prepare_training(temp_d)
Вот вывод и полная трассировка:
Manual Training
Traceback (most recent call last):
File "C:\Users\01-workspace\02-dedupe\TOMISDeDupe\TomisFullDeDupe.py", line 134, in <module>
deduper.prepare_training(temp_d)
File "c:\users\01-workspace\02-dedupe\dedupe\dedupe\api.py", line 806, in prepare_training
self.sample(data, sample_size, blocked_proportion, original_length)
File "c:\users\01-workspace\02-dedupe\dedupe\dedupe\api.py", line 838, in sample
index_include=examples)
File "c:\users\01-workspace\02-dedupe\dedupe\dedupe\labeler.py", line 403, in __init__
self.candidates = super().sample(data, blocked_proportion, sample_size)
File "c:\users\01-workspace\02-dedupe\dedupe\dedupe\labeler.py", line 43, in sample
data)
File "c:\users\01-workspace\02-dedupe\dedupe\dedupe\sampling.py", line 22, in blockedSample
*args))
File "c:\users\01-workspace\02-dedupe\dedupe\dedupe\sampling.py", line 62, in dedupeSamplePredicates
items)
File "c:\users\01-workspace\02-dedupe\dedupe\dedupe\sampling.py", line 73, in dedupeSamplePredicate
column = record[field]
TypeError: row indices must be integers, not str
Я пробовал несколько разных методов для чтения данных с SQL сервера безрезультатно - запросы MySQL сбрасывают данные в правильном формате словаря, и я не могу получить данные в правильном формате, используя SQL Server.