Gahoy, как комментарием ранее я писал, запрос можно собирать через if, добавляя в set только поля с изменившимся значением.
Но, по-моему, это лишнее усложнение - проще все поля обновлять, по крайней мере, до тех пор пока именно этот запрос не начнёт тормозить.
1) Судя по тегам, у Вас веб-приложение. Это значит, что есть некая форма, данные из которой передаются в запрос для обновления полей. Для того чтобы передать в запрос только измененные поля, Вам нужно на клиенте определить, какие из полей были изменены. - это усложняет код клиента. Далее формируете запрос, примерно так:
query = 'update <table> set';
if (field was chaged) {
query += `${field} = ${value}`
}
.....
execute(query)
2) Динамический SQL не самое безопасное решение и поддерживать его не очень удобно.
3) Если полей в таблице становится настолько много, что запрос на обновление начинает тормозить, проблема в структуре таблицы. Вот её и стоит решать.
Я работая в R Studio и, к сожалению, не могу подсказать, где в Jupyter Notebook смотреть кодировку. Могу предположить, что где-то в меню есть свойства проекта и где-то в них можно посмотреть/задать кодировку.
Но, по-моему, это лишнее усложнение - проще все поля обновлять, по крайней мере, до тех пор пока именно этот запрос не начнёт тормозить.