Я могу создать временную таблицу следующим образом:
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?