Вставка pyodbc.Binary данных (BLOB) в столбец образа SQL Server

Я пытаюсь вставить двоичные данные в столбецimage тип данных в базе данных SQL Server. я знаюvarbinary(max) является предпочтительным типом данных, но у меня нет прав на изменение схемы.

В любом случае, я читаю содержимое файла и помещаю его в pyodbc.Binary (), как показано ниже:

f = open('Test.ics', 'rb')
ablob = f.read().encode('hex')
ablob = pyodbc.Binary(ablob)

Когда яprint repr(ablob) Я вижу правильное значениеbytearray(b'424547494e3a5 . . . (многоточие добавлено).

Однако после вставки

insertSQL = """insert into documents(name, documentType, document, customerNumber) values(?,?,?,?)"""
cur.execute(insertSQL, 'test200.ics', 'text/calendar', pyodbc.Binary(ablob), 1717)

Значение столбца документа0x343234353 . . . который выглядит так, как будто шестнадцатеричные данные были преобразованы в коды символов ASCII.

Я думал, что перенос значения в pyodbc.Binary () позаботится об этом? Любая помощь будет принята с благодарностью.

Я использую Python 2.7 и SQL Server 2008 R2 (10.50).

Edit:

Биргл любезно указал, что я без нужды вызывал кодирование («hex»), что привело к моей проблеме. Я полагаю, что это должно было привести данные в строку (хотя более полное объяснение было бы полезно).

Рабочий код:

ablob = pyodbc.Binary(f.read())
cur.execute(insertSQL, 'test200.ics', 'text/calendar', ablob, 1717)

Ответы на вопрос(1)

Ваш ответ на вопрос