我可以創建一個臨時表是這樣的:使用從查詢創建臨時表SQLAlchemy的ORM
session.execute("CREATE TABLE temptable SELECT existingtable.id, "
"existingtable.column2 FROM existingtable WHERE existingtable.id<100000")
但新表是不可讀的,因爲它說,它沒有主鍵。 existingtable.id
是生存表的主要關鍵,所以我期望它在臨時表中得到相同的治療。
不過,我寧願找這樣反正一些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版本的查詢來創建表?
只是珍玩..如果你創建第一種方法臨時表的定義,它的工作?例如create table tablename(id primarykey,column1)insert into tablename select id,column2 from existing table where ... – AJP 2012-03-07 00:57:04
@AJP是的,我認爲這是答案。不幸的是,沒有SA ORM相當於INSERT INTO,並且我也沒有簡單的方法將相對複雜的查詢編譯成sql語句。 – Paul 2012-03-07 06:17:09