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