IBM Db2: непредвиденный токен, обнаруженный после SELECT test_score (SQL0104N)

Теперь у меня проблемы с IBM Db2 с использованием запросов. У меня есть код ниже:

test_score_distribution = %sql SELECT test_score as "Test Score", count(*) as "Frequency" from INTERNATIONAL_STUDENT_TEST_SCORES GROUP BY test_score;

test_score_distribution

Но при выполнении я столкнулся с этой ошибкой:

(ibm_db_dbi.ProgrammingError) ibm_db_dbi::ProgrammingError: Ошибка SQLNumResultCols: [IBM][Драйвер CLI][DB2/LINUXX8664] SQL0104N Непредвиденный маркер, обнаруженный после SELECT test_score . Ожидаемые токены могут включать: И. SQLSTATE=42601\r SQLCODE=-104 [SQL: SELECT test_score как результат теста, count(*) как частота из INTERNATIONAL_STUDENT_TEST_SCORES GROUP BY test_score;] (Справочная информация об этой ошибке: http://sqlalche.me/e/f405)

Как я могу это исправить?


person Le Hoang Phuc    schedule 10.05.2021    source источник
comment
Как выглядит таблица? В заявлении много ошибок. Вы щелкнули ссылку SQLAlchemy со справочной информацией?   -  person data_henrik    schedule 10.05.2021
comment
Пожалуйста, отредактируйте свой вопрос, чтобы предоставить подробную информацию о вашей среде и всех используемых версиях компонентов. Не используйте для этого комментарии. Я могу выполнить ваш запрос в блокноте jupyter 6.2.0 с ibm_db 3.0.4, ibm_db_sa 0.3.6, sqlalchemy 1.3.23, с python 3.8.5. Таким образом, все, что вызывает ваш симптом, зависит от вашей среды.   -  person mao    schedule 10.05.2021
comment
Я видел такие проблемы с символами нулевой длины   -  person AngocA    schedule 12.05.2021


Ответы (1)


у меня была такая же проблема, попробуйте следующие шаги:

test_score_distribution = %sql SELECT test_score, count(*) "Frequency" from INTERNATIONAL_STUDENT_TEST_SCORES GROUP BY test_score;
    
test_score_distribution

И затем, чтобы изменить имя, вы можете использовать эту команду:

dataframe = test_score_distribution.DataFrame()
column_names = dataframe.columns.values
column_names[0] = "Test Score"
dataframe.columns = column_names
column_names[1] = "Frequency"
dataframe.columns = column_names
dataframe

По моему опыту работы с магическими командами SQL вам нужно удалять пробелы в каждом запросе.

Вы всегда можете сохранить таблицу с помощью функции .DataFrame() и работать более свободно.

person Ricardo Jose Hincapie Llerena    schedule 11.06.2021