psycopg2查询二进制数据返回值为memoryview要如何处理?

我的原本任务:想实现在PostgreSQL数据库中,建立四叉树索引管理栅格数据。我现在在做的事:实现栅格数据在PostgreSQL中自建表存入取出。
具体过程:
1、我将遥感影像数据读取部分存入PostgreSQL中,用的bytea字段类型。

from osgeo import gdal
import psycopg2 as pg2

band_1 = gdal.Open(r'E:\LS_data\LC81210422013278LGN00\LC81210422013278LGN00_B1.tif')
data = band_1.GetRasterBand(1).ReadAsArray(3000,3000,2,2)

def saveRaster(values):
    conn = pg2.connect("dbname=sample user=postgres password=123456 host=localhost")
    cur = conn.cursor()
    #cur.execute("CREATE TABLE dai_raster (id serial PRIMARY KEY, data bytea);")
    cur.execute("INSERT INTO dai_raster (data) VALUES (%s)",
               (pg2.Binary(values),))
    conn.commit()
    print("事务已提交,即将断开数据库连接")
    cur.close()
    conn.close()

saveRaster(data)
del data

这块数据用ReadAsArray()输出的结果为:

img

2、而后想要实现查询出来,进一步写入文件或显示出来。

import psycopg2 as pg2
import numpy as np
#from matplotlib import pyplot as plt

def GetData():
    conn = pg2.connect("dbname=sample user=postgres password=123456 host=localhost")
    cur = conn.cursor()
    cur.execute("SELECT data FROM dai_raster WHERE id=6;")
    data = cur.fetchone()
    cur.close()
    conn.close()
    return data

Bydata = GetData()

Bydata是得到的数据,然后我就不知道要如何处理它了。

img

这里一个尝试(网上搜的,但我没有理解为什么):

numpydata = np.array(Bydata)
print(numpydata)

img

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。