Условие type(row[0]) is cx_Oracle.BLOB
всегда ложно.Поскольку cx_Oracle.BLOB
- это тип столбца, который появляется в описании набора результатов, но класс равен cx_Oracle.LOB
, поэтому вместо этого проверьте:
row = bcur.fetchone()
if isinstance(row[0], cx_Oracle.LOB):
file.write(row[0].read())
Причина, по которой файл оказался пустым, заключалась в том, что он никогда не былзаписано в.
Остальная часть ответа остается верной.
Почему вы открываете файл с кодировкой?Это должны быть двоичные данные, которые не следует транскодировать.
Заменить with codecs.open('x.pdf', encoding='utf-8', mode='wb+') as file:
С with open('x.pdf', mode='wb+') as file: