如何读取数据类型为BYTEA的postgres DB中的列以及使用PYTHON对压缩json进行编码

如何读取数据类型为BYTEA的postgres DB中的列以及使用PYTHON对压缩json进行编码,python,json,postgresql,compression,bytea,Python,Json,Postgresql,Compression,Bytea,我在postgres DB中有一列数据类型为bytea,编码为压缩的_json。我如何读取本专栏的值并在Python中获得正确的json?我现在没有时间给出完整的工作示例。相反,我将提供一个大纲: 从数据库中读取列 使用Python模块 json\u data=gzip.解压缩(数据) 其中,json_数据是一个字节对象 使用Python json模块读取json_数据 更新。 例如: 但是没有显示gzip.compress和decompress方法。也许这是我的gzip模块的版本问题。无论如何

我在postgres DB中有一列数据类型为bytea,编码为压缩的_json。我如何读取本专栏的值并在Python中获得正确的json?

我现在没有时间给出完整的工作示例。相反,我将提供一个大纲:

  • 从数据库中读取列
  • 使用Python模块
  • json\u data=gzip.解压缩(数据)

    其中,json_数据是一个字节对象

  • 使用Python json模块读取json_数据
  • 更新。 例如:


    但是没有显示gzip.compress和decompress方法。也许这是我的gzip模块的版本问题。无论如何,我可以通过以下方式解压:

  • 将列转换并存储为字节数组:-

       payload = bytearray(row[0]) 
    
  • 对于解压缩,请使用以下代码段:

       fileobj = cStringIO.StringIO(payload)
       gzf = gzip.GzipFile('dummy-name', 'rb', 9, fileobj)
       decomprJson = gzf.read()
    

  • JSON是如何压缩的?在Python中如何访问数据库?我在Python代码中使用Psycopg2访问postgres数据库。另外,我不确定,但我认为压缩的json基本上只是一个gzip压缩的json。您需要确定使用了什么压缩,否则就不会有什么进展。你能找出数据是如何输入到列中的吗?当然。我刚找到它。它正在使用java中的GZipOutputStream进行压缩。虽然Python3.2+提供了.gzip.compress/decompress,但不确定这是否有帮助。
       payload = bytearray(row[0]) 
    
       fileobj = cStringIO.StringIO(payload)
       gzf = gzip.GzipFile('dummy-name', 'rb', 9, fileobj)
       decomprJson = gzf.read()