首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将BLOB文件转换为图像MYSQL python

问将BLOB文件转换为图像MYSQL python
EN

Stack Overflow用户
提问于 2021-09-09 20:40:02
回答 1查看 26关注 0票数 0

我使用请求来获取图像的字节,然后尝试将其作为BLOB字段存储在MySQL表中;但是当我尝试获取blob文件并使用pillow获取图像时,它抛出了错误,并指出需要一个类似字节的对象,而不是一个元组。

我知道字节是正确的,因为当我尝试先读取图像而不将其放入sql表中时,它工作得很好。

代码语言:javascript
复制
import mysql.connector # imports sql functionality
import requests
from PIL import Image
import io

r =requests.get("https://www.amazon.co.uk/images/I/81VoHkKTTBL._AC_UY327_FMwebp_QL65_.jpg")

db = mysql.connector.Connect(
    host="localhost",
    user="user1",
    passwd="paswd",
    database="temporary_database",
    )
cursor = db.cursor()
imag = r.content
cursor.execute("select img from test where Price_of_item = 21")

for x in cursor:
    img = x

image_data = img
image = Image.open(io.BytesIO(image_data))
image.show()

此代码是将字节作为BLOB传递给sql时不起作用的代码

image of the error

代码语言:javascript
复制
import mysql.connector # imports sql functionality
import requests
from PIL import Image
import io

r =requests.get("https://www.amazon.co.uk/images/I/81VoHkKTTBL._AC_UY327_FMwebp_QL65_.jpg")
img = r.content

image_data = img
image = Image.open(io.BytesIO(image_data))
image.show()

这不会传递给sql表,因此可以很好地工作

EN

回答 1

Stack Overflow用户

发布于 2021-09-09 21:22:04

问题出在代码的这一部分:

代码语言:javascript
复制
for x in cursor:
    img = x

游标中的每一行x都是一个元组,而不是单个值。

如果查询从表中选择了多个列,游标将生成一个元组,该元组中的每个元素都包含查询中每列的一个元素。如果只选择一列,情况也没有什么不同。在这种情况下,游标生成的元组中只有一个元素。

有几种可能的方法来处理这个问题。首先,您可以只选择元组中的第一个元素:

代码语言:javascript
复制
for row in cursor:
    img = row[0]

或者,在循环体中使用解构赋值:

代码语言:javascript
复制
for row in cursor:
    (img,) = row

或者立即分解光标出来的内容:

代码语言:javascript
复制
for (x,) in cursor:
    img = x
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69124475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档