Попробуйте:
cursor.execute(
'''UPDATE im_entry.pr_table
SET selected_entry = im_entry.usr_table.{0}
FROM im_entry.usr_table
WHERE im_entry.pr_table.image_1d = ?'''.format(entryn),[idn])
Обычно вы хотите вызвать cursor.execute(sql,args)
, где sql
- это параметризованный SQL-запрос, а args
- это список или кортеж значений, которые нужно заменить назаполнители параметров.
Для Postgresql обычный драйвер БД pyscopg использует вопросительные знаки для заполнителей параметров.
Таким образом, обычно вы хотите использовать что-то вроде
sql='''UPDATE im_entry.pr_table
SET selected_entry = ?
FROM im_entry.usr_table
WHERE im_entry.pr_table.image_1d = ?'''
но в вашем случае вы не пытаетесь установить selected_entry
на конкретное значение, а на имя столбца.Это верно?В этом случае, к сожалению, вы не можете использовать параметр-заполнитель.Вместо этого вы должны использовать форматирование строки, что я и предложил выше.