Народ помогите решить проблему:

надо сказать sqlalchemy, чтобы он перекодил (в utf-16 с 1251) ошибки с базы, а не возвращал последовательность байт в эксэпшн,

типа:
(<class ‘sqlalchemy.exceptions.DatabaseError’>, DatabaseError('(DatabaseError) ORA-01400: \xed\xe5\xe2\xee\xe7\xec\xee\xe6\xed\xee \xe2\xf1\xf2\xe0\xe2\xe8\xf2\xfc NULL \xe2 (“SCOTT”.“LDAP”.“ID”)\n',), <traceback object at 0x03657210>)

можно выдергивать последовательность и перекодить вручную или NLS_LANG в utf16 ставить, но это крайние варианты.

Решение нашлось: Можно перекодить не весь тупл sys.exc_info, а отдельно sys.exc_value, который чисто содержит исключение, полученное из БД.