【发布时间】:2022-03-03 11:44:57
【问题描述】:
我使用此代码将图像插入 mysql 数据库并取回图像。
这段代码完美运行,没有错误,但问题是即使在将图像插入 img 表后,当我在 mysql 命令行中执行命令 select * from img ; 时,它也没有显示任何记录。
在数据库中创建的表;
create table img(images blob not null);
import mysql.connector
import sys
from PIL import Image
import base64
import cStringIO
import PIL.Image
db = mysql.connector.connect(user='root', password='abhi',
host='localhost',
database='cbir')
#image = Image.open('C:\Users\Abhi\Desktop\cbir-p\images.jpg')
with open("C:\Users\Abhi\Desktop\cbir-p\images.jpg", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
#blob_value = open('C:\Users\Abhi\Desktop\cbir-p\images.jpg', 'rb').read()
sql = 'INSERT INTO img(images) VALUES(%s)'
args = (encoded_string, )
cursor=db.cursor()
cursor.execute(sql,args)
sql1='select * from img'
cursor.execute(sql1)
data=cursor.fetchall()
#print type(data[0][0])
data1=base64.b64decode(data[0][0])
file_like=cStringIO.StringIO(data1)
img=PIL.Image.open(file_like)
img.show()
db.close()
【问题讨论】:
-
在manual 中我发现有一种用于二进制字符串(BLOB)的数据类型和一种用于字符串(TEXT)的数据类型。为什么要将二进制字符串(图像)转换为字符串(base64)并将其保存为二进制字符串(BLOB)?
标签: python mysql python-imaging-library