Dynamically query a subset of columns in sqlalchemy

orm, python, sqlalchemy

Solution

You can get use of select():

from sqlalchemy.sql import select

columns = ['id', 'name']
print(session.query(select(from_obj=User, columns=columns)).all())

Hope that helps.

Problem

Assume only two columns(name and id) are needed from a table. I would code something like below: ``` session.query(User.id, User.name).all() ``` But if the column names are dynamic, ``` def get_data(table, columns): return session.query(*(getattr(table, column) for column in columns)).all() ``` But the above one looks ugly. Is there a better recommended way?

Original source