2012-09-14 50 views
2

我有一個sqlalchemy類R它實現了兩個其他類AB之間的m:n關係。因此,R有兩個整數列source_idtarget_id,它們包含引用實例的ID。而R有兩個屬性source_objtarget_obj,它們是通過relationship定義的。它與文檔中描述的here差不多一樣。SqlAlchemy:檢查/反映關係信息

我想要做的是從R檢索引用的類。我正在使用sqlalchemy 0.8,並試圖在R.source_obj上使用inspect()方法,但我只收回InstrumentedAttribute,這似乎沒有多大的幫助。至少我無法提取任何有用的信息或找到任何有關它的文檔。

任何幫助將不勝感激!我如何從R獲得AB

回答

1

嘗試類似這樣的事情。我也在處理這個問題,沒有找到任何文件,認爲這可以幫助你開始。

i = inspect(model) 
for relation in i.relationships: 
     print relation.direction.name 
     print relation.remote_side 
     print relation._reverse_propery 
     dir(relation) 

問候

0

我花了一天大部分時間都在這同一個問題的工作,我能寫一個列表理解的是發生在一個表,然後吐出來的表名的列表它們通過關係或外鍵連接。您需要將該字符串轉換爲對實際類的引用,但否則它工作得很好。

relationship_list = [str(list(column.remote_side)[0]).split('.')[0] for column \ 
        in inspect(table).relationships] 

通過消除.split('.')[0],你可以得到它通過連接所提到的實際列的列表。理解是非常醜陋的,但它的作品。希望這有助於任何正在尋找我一樣的東西的人!