У меня есть таблица со столбцами, как показано ниже: (id, col1, col2, col3, col4)
. Мне нужно вставить новую строку в эту таблицу, с заданными данными, например, dict: data = {'id': 1, 'col1': 1, 'col2':1, 'col3':1, 'col4': 1}
.
Я хочу использовать приведенный ниже запрос для вставки данных в таблицу, если идентификатор не существует, или для обновления таблицы если идентификатор существует:
query =
'''
INSERT INTO tablename (id, col1, col2, col3, col4)
VALUES (%(id)s, %(col1)s, %(col2)s, %(col3)s, %(col4)s)
ON CONFLICT (id) DO UPDATE SET
col2 = col2 + 1;
'''
result = cur.execute(query, data)
Я могу передать данные в блок вставки, но с помощью блока «Конфликт», когда выполняется обновление, col2 = col2 + data ['col2] выдает ошибку как column referance "col2" is ambiguous
,
Другой вопрос - как обновить значение col2 на основе условия из других столбцов, например: col2 = col2 + 1 if col1 == data['col1] else col2 = col2