使用Python从MS SQL Server读取zlib/gzip压缩数据

0 投票
1 回答
2700 浏览
提问于 2025-04-16 15:15

我正在使用Python 2.6从SQL Server读取数据。现在遇到问题,因为我数据库中的一个列是varbinary类型。我使用的是pyodbc,而在Python程序中,这个数据的类型是“buffer”。

这个数据库中的列存储的是经过gzip压缩的文本。我现在不知道怎么从Python中解压缩这个“buffer”类型的数据。

有没有人能给点帮助或建议呢?

这是我正在做的事情

con = pyodbc.connect(...)
cursor = con.cursor()
cursor.execute('select ...')
row = cursor.fetchone()

if row:
   x = row.varbinary_column_name
   asciistring = zlib.decompress(x) # throws zlib.error: Error -3 while 
                                    # decompressing data: incorrect header check

提前谢谢大家!

1 个回答

0

这样做:

print repr(x[:3])

一个 zlib 数据流通常以三个字节 x\x9cc 开头。而一个 gzip 数据流总是以两个字节 \x1f\x8b 开头。你手上的数据是什么呢?

根据你的评论,结果是 '+J\xcd'。这看起来既不是 zlib 也不是 gzip。你有什么文档吗?你有没有生成这些数据的源代码?

撰写回答