«а как вместо этого сделать?»
Жесткий вызов. Проблема в том, что они вставляют метаданные (в частности, имена столбцов) на лету в оператор SQL. Я не большой поклонник такого рода вещей. Переменная sourcedest
имеет два имени столбца, которые будут обновлены.
Скорее всего, есть только одна (или несколько) пар имен столбцов, которые фактически используются. Я предпочитаю делать это.
if situation1:
stmt= "INSERT INTO mastertickets (this, that) VALUES (?, ?)"
elif situation2:
stmt= "INSERT INTO mastertickets (foo, bar) VALUES (?, ?)"
else:
raise Exception( "Bad configuration -- with some explanation" )
cursor.execute( stmt, (self.tkt.id, n) )
Если для такого рода вещей существует более одной допустимой комбинации столбцов, это означает, что модель данных объединила два объекта в одну таблицу, что является распространенной проблемой проектирования базы данных. Поскольку вы работаете с продуктом и плагином, вы мало что можете сделать с проблемами модели данных.