如果是通过query_property创建的,那么是否可以缩小SQLAlchemy中生成的查询的范围?

时间:2010-01-24 20:57:33

标签: python sql sqlalchemy

我还有一个关于SQLAlchemy的快速问题。

如果我在SQLAlchemy Table类中添加了query_property [1]字段,是否可以缩小SELECTed字段的范围?

这就是我的意思。

假设我的班级Comments有这个:

class Comments:
    query = Session.query_property()
    ...

然后,如果我执行以下操作:

>>> print Session.query(Comment)                      

然后SQLAlchemy生成以下查询,其中包含comments表中的所有列:

SELECT comments.comment_id AS comments_comment_id,
       comments.comment    AS comments_comment
       ... more columns ...
FROM comments

但我想缩小此查询范围并仅选择(假设)comment字段,如以下构造中所示:

>>> print Session.query(Comment.comment)   
SELECT comments.comment AS comments_comment 
FROM comments

是否可以通过Comment.query构造?

执行此操作

我尝试了以下但是没有用:

>>> print Comment.query(Comment.comment)                
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: 'Query' object is not callable

请帮我一个建议。

谢谢,Boda Cydo。

[1] http://www.sqlalchemy.org/docs/reference/orm/sessions.html#sqlalchemy.orm.scoping.ScopedSession.query_property

1 个答案:

答案 0 :(得分:1)

尝试使用query.values(Comment.comment)。请注意,它返回生成器,而不是修改后的查询,因此应用所有过滤器后应该调用此方法。