Двоичный столбец Python Pyodbc возвращает числа вместо \ xda \ x08 \ xcd \ x08 \ xba \ x08 - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть база данных SQL, которая отображает varbinary (max), например 0x9406920691068F ... Я хочу импортировать ее в python, чтобы получить точно такой же тип данных.Однако вместо этого он показывает что-то вроде этого [b '\ x94 \ x06 \ x92 \ x06 \ x91 \ x06 \ x8f \ x06 \ x8d .. как мне скопировать те же числа в python?Я новичок в Python, пожалуйста, помогите.

Я скопировал код из предыдущего поста, и он не работал

import pyodbc

    def hexToString(binaryString):
    try:
      hashString = ["{0:0>2}".format(hex(b)[2:].upper()) for b in binaryString]
      return '0x' + "".join(hashString)
    except:
      return binaryString


    query = """ select P from Access.table """

conn_str = (
      **** private database details # I don't copy on the page
    )

cnxn = pyodbc.connect(conn_str)
cnxn.add_output_converter(pyodbc.SQL_BINARY, hexToString)
cursor = cnxn.cursor()

try:
    cursor.execute(query)
    row = cursor.fetchone()
except MySQLdb.error as err:
    print(err)
else:
    while row is not None:
        print(row)
        row = cursor.fetchone()

1 Ответ

0 голосов
/ 21 февраля 2019

Если тип возвращаемого столбца varbinary(max), вам нужно добавить функцию преобразователя вывода для обработки SQL_VARBINARY, а не SQL_BINARY

cnxn.add_output_converter(pyodbc.SQL_VARBINARY, converter_function_name)
...