Вы просто не можете использовать заполнители для имен столбцов или таблиц. У меня нет авторитетной цитаты для этого - я «знаю» это только из-за того, что пробовал это и от неудачи. Это имеет смысл:
execute
-ing) инструкцию SQL перед извлечением, поскольку все части оператор может быть заменен. Короче говоря, вы нашли Правильный путь - использовать строковое форматирование.
c.execute('SELECT {} FROM {} WHERE id=?'.format(column, table), row))
1 Не все параметры котировки драйверов - oursql
нет, поскольку он отправляет SQL и аргументы на сервер отдельно.