2013-07-04 33 views
0

我要動態地加入一定數量從列表中包含表名的表,例如,如果我的列表中包含兩個元素是這樣的:動態加入SQLAlchemy的

tables_to_join = ['table1','table2'] 

然後我想有一個左連接在查詢中的這兩個表之間。

table1 LEFT JOIN table2 on table1.id = table2.id 

如果該表只包含一個元素,那麼就沒有必要做一個連接。

我該怎麼用SQLAlchemy來做這件事?

我想我應該做這樣的事情:

test_query = session.query(my_table).join(tables_to_join) 

但後來我又怎麼去管理那裏將沒有必要參加(如果table_to_join僅包含一個元素)的情況下?

任何幫助將會很棒!

+0

難道你不能只檢查'tables_to_join'的長度,然後將'.join(tables_to_join)'部分粘在if循環中嗎?或者我在這裏錯過了什麼。 –

回答

1
tables_to_join = [..] 

if (len(tables_to_join) > 1): 
    query = session.query(eval(tables_to_join[0])) 

    for table in tables_to_join[1:]: 
     query = query.join(eval(table))