sqlalchemy select * подзапрос с псевдонимом не работает - PullRequest
0 голосов
/ 20 июня 2019

Я динамически генерирую запрос для sqlalchemy:

def get_objects(
    self, from_table, filters, select_=[], group_=[], order_=[], count=False
):
    if group_ and set(select_) != set(group_):
        raise ValueError(
            'Grouped columns must be the same as the selected columns'
        )

    if count and not group_:
        raise ValueError(
            'Count function is only allowed in combination with a group'
        )

    if select_:
        select_cols = [column(s) for s in select_]
        if count:
            select_cols += [func.count()]
    else:
        select_cols = ['*']

    selelct_stmt = select(
        from_obj=from_table, columns=select_cols, order_by=order_, group_by=group_
    ).alias('tmp')

    query = self._session.query(selelct_stmt)

    #  some more stuff being done with the query...

    return query.all()

При вызове функции следующим образом

get_objects(SomeTable, None)

Возвращает ошибку

sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for column 'tmp.*'"

Я отладил фактическое отправляемое сообщение выбора, которое является

SELECT tmp.* 
FROM (SELECT * 
FROM ruletemplate) AS tmp

Выполнение этого в PostgresDB работает нормально, хотя ...

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