SQLAlchemy从修改后的select中插入

时间:2014-03-27 05:07:59

标签: sqlalchemy

如何使用SQLAlchemy的ORM层生成此查询?

insert into foo (a,b)
select ‘new’ as a, b
from foo
where a = ‘old’;

假设我已经将foo映射到一个类。

我见过Insert.from_select,但我不确定如何修改其中一个字段,就像我在文本查询中所做的那样。

1 个答案:

答案 0 :(得分:0)

select()where()insert().from_select()的组合可以完成这项工作:

>>> from sqlalchemy.sql import table, column, select
>>> foo = table('foo', column('a'), column('b'))
>>> print(foo.insert().from_select(['a', 'b'], 
          select(['"new" as a', 'b']).select_from(foo).where('a = "old"')))

INSERT INTO foo (a, b) SELECT "new" as a, b 
FROM foo 
WHERE a = "old"

希望有所帮助。