如何将整个表格的内容替换为另一个表格的内容

时间:2015-11-17 10:47:11

标签: python mysql python-2.7 orm peewee

我需要将一个表的全部内容替换为另一个表的内容。两个表都有相同的字段。

我没有看到通过Peewee执行ALTER TABLE声明的任何方式,所以我决定使用DROP TABLECREATE TABLE和{{1}的组合像这样的语句:

INSERT ... FROM

但问题是如何指定所有字段为TableInWhichIWantToReplaceAllData.drop_table() db.create_table(TableInWhichIWantToReplaceAllData) TableWithNewData.insert_from( # ???, # ??? ).execute() SELECT?我不想像示例中那样手动指定所有这些:

INSERT

还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

Peewee通过migrations extension支持表格更改。具体来说,听起来你想要rename a table

或者,您可以使用INSERT INTO ... SELECT FROM。要获取模型上的所有字段,您可以使用ModelClass._meta.sorted_fields(2.7.0及更高版本)或ModelClass._meta.get_fields()(2.6.4及更早版本)。

   select = TableWithData.select()
   insert = NewTable.insert_from(NewTable._meta.get_fields(), select)

我相信这应该可以做到,但老实说......只需使用迁移器。