создание временной таблицы из запроса с использованием sqlalchemy orm

Я могу создать временную таблицу следующим образом:

session.execute("CREATE TABLE temptable SELECT existingtable.id, "
    "existingtable.column2 FROM existingtable WHERE existingtable.id<100000")

но новая таблица не читается, потому что в ней указано, что у нее нет первичного ключа. existingtable.id является первичным ключом exisitingtable, поэтому я ожидал, что он будет обрабатываться так же во временной таблице.

Тем не менее, я все равно предпочел бы найти какой-нибудь ORM-способ сделать это. Дано:

temp_table = Table('temptable', metadata, 
    Column('id', Integer, primary_key=True),
    Column('column2', Integer),
    useexisting=True )
class TempTable(object):
    pass
mapper(TempTable, temp_table)
temp_table.create(bind=session.bind, checkfirst=True)
if session.query(TempTable).delete(): #make sure it's empty
    session.commit()

Как я могу заполнить temp_table некоторым выбранным содержимым existingtable, не выполняя 100000 session.query.add(TempTable(...)) команды? Или есть способ создать таблицу из запроса, аналогичного приведенной выше простой версии SQL?

8
задан Paul 6 March 2012 в 23:33
поделиться