__radd__
вызывается только в том случае, если у левого объекта нет метода __add__
, или этот метод не знает, как добавить два объекта (которые он помещает, возвращая NotImplemented). Оба класса имеют метод __add__
, который не возвращает NotImplemented. Поэтому метод __radd__
никогда не будет вызван.
Я бы предложил просто создать оператор 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 (включая специальные символы, пробелы и т. д.), но имейте в виду, что это также делает имена чувствительными к регистру, и вам потребуется также указывать кавычки при выполнении любой операции над таблицей.