SQLAlchemy:更新from_select

Bar*_*ski 9 python sql postgresql sqlalchemy

我需要像执行查询一样

UPDATE node
SET node.parent_id = node_node.parent_id,
    node.label = node_node.label
FROM node_node
WHERE node_node.child_id = node_id
Run Code Online (Sandbox Code Playgroud)

使用SQLAlchemy.我确实搜索了文档insert().from_select(),但只找到了,但没有update().from_select().我知道我可以以编程方式实现相同的目标,但我需要它尽可能快.

可能吗?你能给我一个例子或链接到docs /任何线索吗?

van*_*van 7

假设t_nodenodeTable实例,而t_node_node- node_nodeTable实例,请参阅下面的语句.

upd = (t_node.update()
        .values(
            parent_id = t_node_node.c.parent_id,
            label = t_node_node.c.label,
            )
        .where(t_node_node.c.child_id == t_node.c.node_id)
        )
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请阅读有关插入,更新和删除文档的更多信息.

  • [特别是](http://docs.sqlalchemy.org/en/latest/core/dml.html#sqlalchemy.sql.expression.update):“ _WHERE子句可以引用多个表。对于支持此表的数据库,将会生成UPDATE FROM子句_“ (2认同)