Inserindo dados pyodbc.Binary (BLOB) na coluna de imagem do SQL Server

Eu estou tentando inserir dados binários em uma coluna deimage tipo de dados em um banco de dados do SQL Server. eu seivarbinary(max) é o tipo de dados preferido, mas não tenho direitos para alterar o esquema.

De qualquer forma, eu estou lendo o conteúdo de um arquivo e colocando-o em pyodbc.Binary () como abaixo:

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

Quando euprint repr(ablob) Eu vejo o valor corretobytearray(b'424547494e3a5 . . . (reticências adicionadas).

No entanto, após inserir

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

O valor da coluna do documento é0x343234353 . . . que aparece como se os dados hexadecimais fossem convertidos em códigos de caracteres ASCII.

Eu pensei que envolver o valor em pyodbc.Binary () iria cuidar disso? Qualquer ajuda seria muito apreciada.

Estou usando o Python 2.7 e o SQL Server 2008 R2 (10.50).

Editar:

Beargle gentilmente apontou que eu estava chamando codify ('hex') desnecessariamente, o que estava levando ao meu problema. Acredito que isso deve ter coagido os dados em uma string (embora uma explicação mais completa seja útil).

Código de trabalho:

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

questionAnswers(1)

yourAnswerToTheQuestion