2010-10-26 165 views
1

我有一個非常簡單的表(映射爲AuthToken類),由一個字符串('標記')和一個用戶標識符(外鍵到另一個表),'用戶'作爲關係(= class User)查詢關係不返回sqlalchemy中的相關對象

session.query(AuthToken.user).one()將令牌和用戶標識(作爲元組)返回給用戶對象,但不返回用戶對象。

有人知道爲什麼嗎?

謝謝!

+0

你有沒有想過解決這個問題? – 2010-11-01 12:19:17

+0

並非如丹尼爾所寫,我們應該查詢對象,而不是它們的屬性,然而從那時起我也看到了在sqlalchemy文檔中查詢屬性以及.. – 2010-11-19 18:46:04

回答

0

如果你想接收對象,你應該查詢映射的類,而不是它們的屬性。

token = Session.query(AuthToken).options(eagerload('user')).filter(...).one() 
user = token.user 
+0

你是對的,我只能查詢類,這回答了我的問題。儘管我試圖這樣做的原因是因爲我不想查詢「AuthToken」的每個屬性,只有'用戶',我認爲這是做到這一點的方法。 – 2010-11-05 16:52:03

+0

@sobear,這是可能的,你只需要從User類而不是AuthToken來查詢它,比如'user = Session.query(User).join(AuthToken).filter(AuthToken .... == ...)。一()',這樣它將只拉用戶對象。 – 2010-11-07 22:57:30