我有一个非常简单的表(映射为AuthToken类),由一个字符串('标记')和一个用户标识符(外键到另一个表),'用户'作为关系(= class User)查询关系不返回sqlalchemy中的相关对象
session.query(AuthToken.user).one()将令牌和用户标识(作为元组)返回给用户对象,但不返回用户对象。
有人知道为什么吗?
谢谢!
我有一个非常简单的表(映射为AuthToken类),由一个字符串('标记')和一个用户标识符(外键到另一个表),'用户'作为关系(= class User)查询关系不返回sqlalchemy中的相关对象
session.query(AuthToken.user).one()将令牌和用户标识(作为元组)返回给用户对象,但不返回用户对象。
有人知道为什么吗?
谢谢!
如果你想接收对象,你应该查询映射的类,而不是它们的属性。
token = Session.query(AuthToken).options(eagerload('user')).filter(...).one()
user = token.user
你是对的,我只能查询类,这回答了我的问题。尽管我试图这样做的原因是因为我不想查询“AuthToken”的每个属性,只有'用户',我认为这是做到这一点的方法。 – 2010-11-05 16:52:03
@sobear,这是可能的,你只需要从User类而不是AuthToken来查询它,比如'user = Session.query(User).join(AuthToken).filter(AuthToken .... == ...)。一()',这样它将只拉用户对象。 – 2010-11-07 22:57:30
你有没有想过解决这个问题? – 2010-11-01 12:19:17
并非如丹尼尔所写,我们应该查询对象,而不是它们的属性,然而从那时起我也看到了在sqlalchemy文档中查询属性以及.. – 2010-11-19 18:46:04