SQLAlchemy с использованием `label` для столбцов внутри` load_only` - PullRequest
0 голосов
/ 04 марта 2020

Как можно go о псевдонимах столбцов таблицы, загруженной с использованием joinedload? Мой подход состоял в том, чтобы связать мои joinedload с load_only следующим образом:

session.query(TableA) \
    .options(joinedload(TableA.table_b)
             .load_only(TableB.colA.label('col_a_alias'))
            ) \
    .all()

Однако я получаю следующую ошибку: TypeError: Boolean value of this clause is not defined.

Причина, по которой мне это нужно, заключается в том, что основываясь на условии, я хочу перезаписать значения TableB.col_a_alias значениями TableB.colA. Это может быть достигнуто путем перебора объектов после запроса и установки атрибутов вручную. Однако было бы гораздо эффективнее, если бы я мог присвоить столбцам имя столбцов, которые я хочу перезаписать. Мне нужно сделать это в вызове options (), потому что я выкидываю результаты в схему Marshmallow, которая ожидает вложенные объекты.


Ответ

Решением было использование Время запроса SQL выражения как сопоставленные атрибуты .

...