Вы не определили, какую версию IBM Informix Dynamic Server (IDS) вы используете или на какой платформе вы используете, поэтому вам трудно помочь.
Похоже, что SQLAlchemy ожидает более свежую версию Informix, чем вы используете. К моему удивлению, в IDS 11.70 доступна функция niladic CURRENT_ROLE (проверена на 11.70.FC4 на RHEL 5 для x86 / 64). Он не был недавно добавлен, поэтому он будет в любой версии 11.70 и, возможно, в некоторых более ранних версиях (но не в той версии, которую вы используете).
Я не уверен, насколько большая ошибка в SQLAlchemy. Если версия Informix, которую вы используете, действительно старая, у них ограниченные достоинства, добавляющие ее поддержку. Вы можете узнать, какую версию вы используете, запустив:
SELECT DBINFO('version', 'full')
FROM 'informix'.systables
WHERE tabid = 1;
Если это не сработает, ваш сервер устарел на много лет.
Добавление
Думая об этом немного больше ... Интересно, что SQLAlchemy собирается сделать с ролью. Вероятно, не стоит пытаться проанализировать, есть ли у вас разрешение; он должен попробовать операцию и справиться со сбоями. Это будет быстрее, особенно в общем случае, когда у вас действительно есть разрешение.
Возможны две проблемы:
- SQLAlchemy следует помнить, что некоторые (пока еще неопределенные) списки старых версий IDS не поддерживают CURRENT_ROLE.
- SQLAlchemy следует проанализировать, почему он должен знать о текущей роли.