Ну, я решил это несколькими способами. Во-первых, приведенный выше код неверен, поскольку он создает список значений, тогда как он должен создавать список кортежей. т.е.
ids = [(l.strip(),) for l in guidfile.readlines()]
, а затем с помощью
cursor.setinputsizes(cx_Oracle.STRING)
это работает.
На оригинальный вопрос - как избавиться от hextoraw, я обнаружил, что это работает:
import base64
ids = [(base64.b16decode(l.strip()),) for l in guidfile.readlines()]
cursor.setinputsizes(cx_Oracle.BINARY)