Можно ли сузить сгенерированный запрос в SQLAlchemy, если он был создан через query_property? - PullRequest
2 голосов
/ 24 января 2010

У меня есть еще один быстрый вопрос о SQLAlchemy.

Если я добавил поле query_property [1] в свой класс таблицы SQLAlchemy, возможно ли сузить поля 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

Пожалуйста, помогите мне советом.

Спасибо, Бода Кидо.

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

1 Ответ

1 голос
/ 25 января 2010

Попробуйте использовать query.values(Comment.comment). Обратите внимание, что он возвращает генератор, а не измененный запрос, поэтому этот метод должен вызываться последним после применения всех фильтров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...