我可以通过以下方式创建临时表:
session.execute("CREATE TABLE temptable SELECT existingtable.id, "
"existingtable.column2 FROM existingtable WHERE existingtable.id<100000")
但是新表无法阅读,因为它说没有主键。 existingtable.id
是 existingtable 的主键,所以我期望临时表也会得到同样的对待。
然而,我更想找到一种 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()
我该如何把
existingtable
中的一些选定内容填充到temp_table
中,而不需要执行100000个session.query.add(TempTable(...))
命令?或者是否有一种从查询中创建表格的方式,类似于上面的普通SQL版本?