當替補的視圖爲表我有一個正常的選擇:SQLAlchemy的:選擇
e = session.query(MyTable).filter(MyTable.pk=='abc').all()
凡MyTable的映射到my_table
以dB爲單位。
我也創建了數據庫中的派生視圖my_view
具有完全相同的命名的列MY_TABLE。
有沒有辦法在查詢時在my_view
以替代my_table
,讓我從視圖中取回行?顯然,生成的對象只需要被讀取 - 我不打算改變它們。
所以基本上我想SQL是
FROM my_view AS my_table
,而不是
FROM my_table
隨着一切在查詢相同。
我不想再創建一個映射器,除非它可以自動某種程度上爲MyView的有60列一樣MyTable的完成。
更新:select_entity_from
似乎正是我需要的,但在這種情況下,它只是增加了從表中,而不是替換:
v = Table('my_view', metadata, autoload=True)
print session.query(MyTable).select_entity_from(v).filter(MyTable.pk=='abc')
"SELECT ... FROM my_table, my_view WHERE my_table.pk = 'abc';"
但是,只有以下擁有一支由實體:
print session.query(MyTable).\
select_entity_from(select([MyTable])).\
filter(MyTable.pk=='abc')
"SELECT ... FROM (SELECT ... FROM my_tabl) AS anon_1 WHERE anon_1.pk = 'abc';"