У меня есть таблица T с двумя столбцами: Tag (текст) и Score (реальный). Теги остаются постоянными (и может быть несколько строк с одним и тем же тегом), а баллы часто меняются. Новые значения представлены в таком объекте Python (возможно, с миллионами элементов):
recs = [{'tag': t1, 'score': s1}, {'tag': t2, 'score': s2}]
В настоящее время я использую следующий код Python для обновления оценок в таблице:
db_conn = psycopg2.connect(connect_string)
cursor = db_conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
q = "UPDATE T SET Score = %(score)s WHERE Tag = %(tag)s;"
cursor.executemany(q, recs)
Хотя это работает, это довольно медленно. Итак, я ищу решение, которое улучшит скорость кода выше. Любая рекомендация приветствуется.
INSERT
наUPDATE
, а функцииpsycopg2
одинаковы для обоих. Это называется пакетным выполнением с подготовленными операторами. Вы даже можете создавать таблицы, обновлять записи, вставлять записи, удалять записи с тем же синтаксисом. Отсюда и возможный дубликат. - person Torxed   schedule 21.09.2019