2011-06-24 52 views
1

我正在用三種不同級別的對象構建SQL鍊金術結構;例如,考慮一個簡單的數據庫來存儲有關某些博客的信息:有一些Blog對象,一些Post對象和一些Comment對象。每個Post屬於Blog並且每個Comment屬於Post。使用backref我可以自動獲得屬於Blog的所有Post的列表以及Comment的類似列表。我起草了skeleton for such a structureSQL鍊金術:與孫子的關係

我現在想要做的是直接在Blog中包含屬於該Blog的所有Comment的數組。我嘗試了一些方法,但它們不起作用,甚至使SQL Alchemy以我無法修復的方式哭泣。我認爲我的經常需要,但我找不到任何有用的東西。

Colud有人建議我該怎麼做?

謝謝。

+0

從來沒有聽說過在SQL這樣的關係。您可能必須自己內部執行循環,或者在您的博客實現中執行明確的連接操作.... –

回答

2

我想你可以使用一個association proxy

class Blog(Base): 

    comments = association_proxy('posts', 'comments') 
+0

我沒有嘗試,因爲我已經在需求了,但從文檔顯然應該是關聯代理。謝謝。 –

0

您需要使用join

comments = session.query(Comment).join(Post).filter(Post.blog == b1).all() 
+0

謝謝,但我想我正在尋找不同的東西:我想直接添加「comments」作爲類Blog的一個字段,以便像我爲後端「任務」一樣進行訪問。換句話說,我不想要執行查詢的那一行,但是我想將類的某個字段綁定到每次訪問該字段時執行的查詢(就像,一般來說,'relatioship'的確如此)。我[試圖實現這個](http://pastebin.com/wKmYq77p),但有一個我不明白的錯誤。比較第46行和第77行。 –