Я работал над простым SQLAlchemy Core (Python 3.x), подсчитывающим уникальный запрос с использованием следующего кода:
table_object = sqlalchemy.Table(table_name, metadata, autoload=True, autoload_with=engine, schema=schema)
agg_fields = [get_column_correct_case(table_object, col) for col in agg_fields]
agg_col_obj = [table_object.c[col] for col in agg_fields]
agg_query = sqlalchemy.select(agg_col_obj).select_from(table_object)\
.group_by(*agg_fields).count()
engine.scalar(agg_query)
Хотя я считаю, что это должен быть действительный код SQLAlchemy Core, его выполнение вернулось ошибка PYODB C:
(pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]
Incorrect syntax near ')'. (102) (SQLExecDirectW);
[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")
Запрос SQL, сгенерированный этим кодом, который не был выполнен должным образом:
[SQL: SELECT count([ACCOUNT]) AS tbl_row_count
FROM (SELECT dbo.history.[ACCOUNT] AS [ACCOUNT], dbo.history.[RTXNNBR] AS [RTXNNBR]
FROM dbo.history
GROUP BY dbo.history.[ACCOUNT], dbo.history.[RTXNNBR])]
Выполнение запроса непосредственно на SQL Сервер Похоже, что это происходит сбой, потому что вложенный выбор отсутствует псевдоним. Это ошибка? Если нет, то как мне исправить этот код?