При использовании Python для получения двоичных данных (типа IMAGE) из SQL я получаю мусор - PullRequest
0 голосов
/ 22 апреля 2020

Попробовав все остальное, я вынужден задать вопрос. Я использую pyodb c для получения файлов PDF, хранящихся в SQL программного обеспечения для управления документами.

cursor.execute('SELECT Naziv, StatusID, TipID, KontaktNaziv, ID FROM CIS3000.dbo.Dokumenti WHERE MapaID=18755')

for row in cursor:
    if row[1]==1:
        row[1]=defaultstatusi[row[2]-1]
    constring='SELECT Datoteka FROM CIS3000.dbo.Datoteke WHERE DokumentID='+str(row[4])    
    row2=cursor2.execute(constring).fetchone()

   # row2=cursor2.fetchval()
    with open("c:\\_test\\"+row[0]+".pdf", "wb") as fajla:
        fajla.write(row2)

Все файлы, которые я получаю, являются поврежденными файлами. И имеют размер на несколько байтов больше оригинального (который я получаю при экспорте тех же файлов из DMS). Я также получаю на 8 байт больше, чем оригинальный размер файла. Начало файлов: «0xB985BC…» и «0x25504446…» соответственно при шестнадцатеричном просмотре. Я попытался посмотреть на это из SQL Studio - я получаю тот же HEX, который сохраняется в моих файлах.

Попытка связаться с парнями из DMS, они говорят, что хранят их как двоичные данные напрямую, ничего не делая с данными.

Есть идеи?

...