Skip to main content
 首页 » 编程设计

python之如果它是通过 query_property 创建的,是否可以缩小 SQLAlchemy 中生成的查询的范围

2025年05月04日11youxin

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

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

这就是我的意思。

假设我的类(class) 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

请您参考如下方法:

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