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

0at*_*man 8 python mysql sql sqlalchemy

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

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

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

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

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

在psudocode中,一个缓慢的方法是:

for id in result.all():
    install_archive.insert(install(id))
Run Code Online (Sandbox Code Playgroud)

提前致谢!

dth*_*dor 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
Run Code Online (Sandbox Code Playgroud)

这导致(PostgreSQL方言)

INSERT INTO install_archive (col1, col2)
SELECT install.col1, install.col2
FROM install;
Run Code Online (Sandbox Code Playgroud)


Mic*_*ior -2

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

INSERT INTO `table1` (SELECT * FROM `table2`);
Run Code Online (Sandbox Code Playgroud)

  • 我的意思是,通常它确实如此,但它无法在 SQLAlchemy 的狭窄主题中回答它。由于问题并不是真正要帮助@Oatman 解决他所遇到的问题,而是要找出是否可以专门使用 SQLAlchemy 来解决它。这个问题更多地是关于 SQLAlchemy 和 MySQL,而不是关于将数据从一个表移动到另一个表的一般问题。 (3认同)