Я динамически генерирую запрос для 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 работает нормально, хотя ...