代码之家  ›  专栏  ›  技术社区  ›  0atman

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

  •  7
  • 0atman  · 技术社区  · 14 年前

    所以我得到了一些结果 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 回复  |  直到 10 年前
        1
  •  5
  •   dtheodor    10 年前
    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;
    
        2
  •  0
  •   Michael Mior    14 年前

    你可以这样做(改变 SELECT 以满足您的需求)。只需确保两张表的结构相同。

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