SQLAlchemy:将查询结果插入另一个表中

时间:2010-06-18 15:02:12

标签: python sql mysql sqlalchemy

所以我从install表中得到了一些结果,如下所示:

install = metadata.tables['install']  
results = session.query(install) #<sqlalchemy.orm.query.Query object>

我想将这些相同的结果插入到install_archive表中。

我不完全确定如何做到这一点,因为我不想通过定义install-archive对象然后将结果解析为该对象来复制模式。我相信我没有使用ORM,因为我只是反映(这是正确的术语吗?)表并查询它们。

我能看到的所有教程都使用ORM。

在psudocode中,缓慢的做法是:

for id in result.all():
    install_archive.insert(install(id))

提前致谢!

2 个答案:

答案 0 :(得分:5)

install_archive \
.insert() \
.from_select(names=['col1', 'col2'], # array of column names that your query returns
             select=session.query(install)) # your query or other select() object

这导致(PostgreSQL方言)

INSERT INTO install_archive (col1, col2)
SELECT install.col1, install.col2
FROM install;

答案 1 :(得分:0)

您可以执行以下操作(更改SELECT以满足您的需求)。只需确保两个表具有相同的结构。

INSERT INTO `table1` (SELECT * FROM `table2`);