首页 > 解决方案 > psycopg2 将 memoryview 转换回 psycopg2.binary 对象数组

问题描述

正如标题所说,我在我的 postgresql 数据库中插入了一堆图像,这些图像添加到一个数组中并使用光标发送到数据库。数据库中的列是 bytea [],所以它对我有用。

我使用此代码片段将图像字节流转换为二进制,将其放入数组并发送到 db

somearray.append(psycopg2.Binary(image.content))

但是当运行一个 select 语句从数据库中获取该数组时,我得到的是一个 memoryview,我现在不确定如何将它转换回一个数组。

经过研究,我现在真的迷路了,因为大多数帖子都告诉我使用 toByte() 将 memoryview 转换为一些字节字符串,但我的目标是将 memoryview 转换为数组或二进制项以将二进制文件转换回图片。

标签: pythonarrayspostgresqlpsycopg2

解决方案


对于未来读者的参考,该问题是指将多个图像插入每个字节数组中,其中数组中的每个元素代表一个图像。您可以使用以下代码以字节形式获取图像。

cursor.execute("select byte_array from test")
image_sets = [row[0] for row in cursor.fetchall()]
images_as_bytes = [bytes(image) for image_array in image_sets for image in image_array]

推荐阅读