2010-10-26 85 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

相关问题