2016-02-03 40 views
2

我有兩個模型:Product和MBiopoint。 它們通過名爲t_Dataset_Data的多對多表相關。在產品表有屬性「數據」聲明如下:從sqlAlchemy對象中獲取不同的值

data = relationship(u'MBiopoint', secondary=t_Dataset_Data) 

所以,當我查詢產品表中特定的產品是這樣的:

prod = session.query(Product).filter_by(product_id=69).first() 

我現在可以訪問所有MBiopoint這與我的產品在許多相關的許多表,通過這個代碼示例記錄(訪問MBiopoint的的DataStatus列的值):

for pd in prod.data: 
    print pd.datastatus 

我現在需要爲t o獲取與我的產品相關的所有數據記錄的'datastatus'列的不同值,而不使用for循環,如下所示:d = prod.data.datastatus.distinct()

您有什麼想法嗎? 否則,我可以使用for循環獲取不同的值?

回答

1

使用freenode Web IRC網聊,暱稱爲'agronholm'的用戶爲我的問題提供了一個解決方案。 他的提議是:

set(pd.datastatus for pd in prod.data) 

還是現代的方式:

{pd.datastatus for pd in prod.data} 

爲我工作。