2014-03-27 33 views
1

如何使用SQLAlchemy的ORM层生成此查询?SQLAlchemy插入修改后的选择

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

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

我见过Insert.from_select,但我不知道如何修改其中一个字段,例如我在文本查询中所做的操作。

回答

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" 

希望有所帮助。

+0

它被认为是“新”,而不是“新”。 –

+0

@NickRetallack我的不好,看到更新,谢谢。 – alecxe

+0

呃,''新'as',但是我看到现在这是怎么回事。除了它是坏的,因为''new''应该被转义,而不是手动引用。 –