Здесь происходит некоторая путаница по нескольким причинам:
(1) mySQL использует %
в качестве маркера параметра - его легко спутать с %
в Python string % (data1, data2, etc)
(2) некоторые люди, похоже, не знают, что маркеры параметров можно использовать только тогда, когда в синтаксисе SQL можно использовать выражение - это исключает имена таблиц, имена столбцов, имена функций, ключевые слова и т.д.
(3) Code-Golf onelinerism
Обязательный SQL: ALTER TABLE segment_table ADD myColumn VARCHAR(40)
Использование параметра не работает:
key = "myColumn"
sql = "ALTER TABLE segment_table ADD %s VARCHAR(40)" # col name not OK as parm
cursor.execute(sql, (key, ))
Вам необходимо создать приемлемый оператор SQL, используя, например, Форматирование строки Python:
key = "myColumn"
sql = "ALTER TABLE segment_table ADD %s VARCHAR(40)" % key
cursor.execute(sql)