pyodbc二进制列返回奇数字符python

2024-10-01 13:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从db打印查询的代码,显示Varchar、int和其他格式的值没有问题,但是Byteary的值不同。DB上的值类似于0xA09080BD1160AB16,但是python打印的结果是

b'\x03\x80\x03\x8c\x00\x03\x00S^k\xdb' //not actual value

根据我在网上所读到的,有一个conn.add_output_converter(pyodbc.SQL_BINARY, hexToString),但它不起作用 pyodbc版本为4.0.18

^{pr2}$

Tags: 代码db格式notintx00pyodbcx03
1条回答
网友
1楼 · 发布于 2024-10-01 13:25:48

输出转换器函数失败,因为您试图用,upper()而不是.upper()调用upper字符串函数。但是,由于您是为了显示目的而进行转换,所以您不应该通过输出转换函数立即转换返回值,您应该在print之前格式化它,或者将它传递给将显示它的例程。在

crsr.execute("CREATE TABLE #tmp (id INT PRIMARY KEY, foo BINARY(8) NULL)")
crsr.execute("INSERT INTO #tmp (id, foo) VALUES (1, 0xA09080BD1160AB16)")
crsr.execute("SELECT foo FROM #tmp WHERE id=1")
binary_value = crsr.fetchval()  # b'\xa0\x90\x80\xbd\x11`\xab\x16'

# format for printing
print('0x' + binascii.hexlify(binary_value).decode().upper())
# prints:
# 0xA09080BD1160AB16

相关问题 更多 >