У меня есть таблица, для которой при обработке записей я получаю либо полную запись, либо только обновляемые столбцы.
Я хочу написать запрос для обработки обновлений, но обновлять только столбцы с ненулевыми значениями. Например,
Существующая таблица:
1 | John Doe | USA
2 | Jane Doe | UK
Поступающие записи:
(3, Kate Bill, Canada)
(2, null, USA)
Я хочу вставить первую запись и при конфликте ключей при обновлении ТОЛЬКО второй записи последний столбец.
Я не уверен, как написать это с помощью вызова метода execute_values:
execute_values(cursor, "INSERT INTO user_data\
(id, name, country) VALUES %s ON CONFLICT DO UPDATE SET \
<how to only set non null values here>", vendor_records)
Я использую psycopg2 для выполнения этого.