Я бы предложил просто создать оператор create table вместо построения таблицы и затем изменить ее, чтобы добавить к ней столбцы!
Вы можете избавиться от дубликатов в списке, используя следующий код:
listWithoutDups = list(dict.fromkeys(listWithDups))
Затем вы можете построить свое утверждение следующим образом:
columns = ['"%s" varchar2(255)' % n for n in listWithoutDups]
sql = "create table SomeTableName (%s)" % ",".join(columns)
cursor.execute(sql)
Вы заметите, что я включил двойные кавычки вокруг имен столбцов - это необходимо, если вы хотите создать столбцы, которые не соответствуют стандартам Oracle (включая специальные символы, пробелы и т. Д.), Но имейте в виду, что также делает имена чувствителен к регистру, и вам нужно будет также указывать кавычки при выполнении каких-либо операций с таблицей.