Si tengo una consulta SQLAlchemy ORM:SQLAlchemy ORM: modificar las columnas devueltas por una consulta
admin_users = Session.query(User).filter_by(is_admin=True)
¿Es posible modificar las columnas devueltas por esa consulta?
Por ejemplo, para que pudiera seleccionar sólo la columna de la User.id
, y el uso que en una consulta substitución:
admin_email_addresses = Session.query(EmailAddress)\
.filter(EmailAddress.user_id.in_(admin_users.select_columns(User.id))
Nota: el método .values()
no funcionará, ya que ejecuta la consulta y devuelve un iterable de resultados (por lo tanto, ex, EmailAddress.user_id.in_(admin_users.values(User.id))
realizará dos consultas, ninguna).
Sé que podría modificar la primera consulta para que sea Session.query(User.id)
, pero me pregunto específicamente cómo podría modificar las columnas devueltas por una consulta.
Es cierto que, en el ejemplo que he proporcionado, un 'JOIN' es la solución correcta. Sin embargo, dado que no aborda la pregunta que realmente hice, voy a aceptar la respuesta de zzzeek. –
@DavidWolever: bastante justo – van