2014-03-27 57 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''應該被轉義,而不是手動引用。 –