2014-01-14 3 views
0

В SqlAlchemy мне нужно получить частичные сущности с заданным списком полей.Выберите частичные объекты с определенными столбцами

Другие ответы предлагают сделать любое из следующих действий:

session.query(User.id, User.login).all() 
session.query(User).with_entities(User.id, User.login).all() 

Однако, SA возвращает кортежи столбцов:

[ (1, 'user1'), (2, 'user2') ] 

Как Fetch объекты пользователя вместо кортежей и еще ограничить извлеченные столбцы?

ответ

1

Просьба ознакомиться с разделом документации по документации Deferred Column Loading. Вы можете настроить поведение на самой модели по умолчанию deferred, но в вашем случае следующая конфигурация должна это сделать:

session.query(User).options(defer(User.name, User.nickname, ...)).all() 

где вы должны перечислить все столбцы, которые вы хотели бы, чтобы отложить загрузку из базы данных.

Если вам повезет, и у sa.version>=0.9, вы можете также использовать load_only:

session.query(User).options(load_only(User.id, User.login)).all() 

Пожалуйста, обратите внимание, что вы должны загрузить id столбец (или другой primary_key колонке (s)).

Смежные вопросы