Я пытаюсь вставить (source_lat, source_long, destination_lat, destination_long) строки из кадра данных Pandas в таблицу PostgreSQL (gmaps), используя psycopg2 INSERT в цикле for. В таблице есть ограничение целостности, которое предотвращает вставку повторяющихся строк (source_lat, source_long, destination_lat, destination_long), поэтому я перехватываю любые дубликаты с помощью блока try, кроме блока. Мой код ниже.
Я перебираю каждую строку в кадре данных (около 100000 строк) и вызываю cursor.execute(INSERT) для каждой строки, проверяя, вызывает ли это ошибку целостности, если нет, я вставляю эту строку в таблицу gmaps.
Однако этот фрагмент кода выполняется целую вечность — как я могу его ускорить? Я не уверен, где накладные расходы лежат? Спасибо!
Ele — это кортеж, который содержит (source_lat, source_long, destination_lat, destination_long)
for ele in coordinates:
#Inserts new row to table
try:
cursor.execute('INSERT INTO gmaps (source_latitude, source_longitude, destination_latitude, destination_longitude) VALUES (%s, %s, %s, %s)', (ele[0], ele[1], ele[2], ele[3])))
except psycopg2.IntegrityError:
conn.rollback()
else:
conn.commit()