Я предварительно определяю список объектов Column, которые я хочу передать конструктору Table
from sqlalchemy import create_engine as sqla_create_engine
from sqlalchemy import Table as sqla_Table
from sqlalchemy import Column as sqla_Column
from sqlalchemy import Integer as sqla_Integer
from sqlalchemy import String as sqla_String
from sqlalchemy import MetaData as sqla_MetaData
myColsX = [sqla_Column("id", sqla_Integer, primary_key=True),
sqla_Column('namex', sqla_String(15)),
sqla_Column('comment', sqla_String(120))]
Если я вызываю конструктор Table с каждым экземпляром Column, - нет проблем:
myTable = sqla_Table(myTableNameX, myMetaData,
sqla_Column("id", sqla_Integer, primary_key=True),
sqla_Column('namex', sqla_String(15)),
sqla_Column('comment', sqla_String(120)),
extend_existing=True)
myMetaData.create_all(myEngine, tables=[myTable], checkfirst=True)
... и я могу вызывать конструкцию Table несколько раз с чередованием вызовов таблицы DROP.
Если, с другой стороны, я передаю список столбцов как:
myTable = sqla_Table(myTableNameX, myMetaData, *myColsX,
extend_existing=True)
Таблица создается впервые, но с последующим вызовом после команды DROP
я получаю сообщение об ошибке
sqlalchemy.exc.ArgumentError: Column object 'id' already assigned to Table 'tableX
Обратите внимание, что я пробовал различные комбинации флагов таблицы: например, autoload = True, extend_existing = True и т. д. c.
Как правильно создать и передать список Column в конструктор Table?
Спасибо.