Python - 从PostgreSQL保存和恢复图像/图片/ JPEG

时间:2018-03-13 05:57:17

标签: python postgresql psycopg2

所以,我正在尝试使用psycopg2将图像保存到Python的PostgreSQL表中

INSERT查询(Insert.py)

#Folder/Picture is my path/ID is generated/IDnum is increment
picopen = open("Folder/Picture."+str(ID)+"."+str(IDnum)+".jpg", 'rb').read()
filename = ("Picture."+str(ID)+"."+str(IDnum)+".jpg")

#Sample file name is this Picture.1116578795.7.jpg

#upload_name is where I want the file name, upload_content is where I store the image
SQL = "INSERT INTO tbl_upload (upload_name, upload_content) VALUES (%s, %s)"
data = (filename, psycopg2.Binary(picopen))
cur.execute(SQL, data)
conn.commit()

现在恢复保存的图像我执行此查询(recovery.py)

cur.execute("SELECT upload_content, upload_name from tbl_upload")
for row in cur:

    mypic = cur.fetchone()
    open('Folder/'+row[1], 'wb').write(str(mypic[0]))

现在发生的情况是当我执行recovery.py时它会生成一个“.jpg”文件,但我无法查看或打开它。

如果它有助于我使用Python 2.7和Centos7。 为了附加信息,我在打开生成的文件时在图像查看器上得到了这个信息。

Error interpreting JPEG image file (Not a JPEG file: starts with 0x5c 0x78)

我也尝试过使用其他格式(.png,.bmp)

1 个答案:

答案 0 :(得分:0)

我仔细检查了我的数据库类型,显然upload_content数据类型是 text 它应该是 bytea 当我创建我的数据库时,我以为我已经将它设置为bytea。问题解决了。