假设我正在使用请求打开图像URL并读取数据,另存为BLOB数据到MySQL,这样做的最有效方法是什么?

我进行了一些搜索,看起来像PIL.Image和StringIO方法,如本文档中所示:http://docs.python-requests.org/en/latest/user/quickstart/#binary-response-content

如该问题中所述,还有其他方法:How do I read image data from a URL in Python?

但是,我似乎正在使用一种“更简单”的方式来执行任务,我“认为”代码可以正常工作,因为从我的数据库中我可以打开保存的图像。因此,我不必担心...但是,我不确定是否存在潜在的问题(因为未在任何地方提出建议,并非我所知道的那样)...有人可以帮我看看以下内容吗?代码,让我知道是否有问题。

import requests
import pymysql
import pymysql.cursor

connection = pymysql.connect(user='root',host='localhost',database='mysql')
mycursor=connection.cursor()    ## connect to database

pic_url='http://example_photo.jpg'
data=requests.get(pic_url)   # read image
photo=data.content

sql=""" INSERT INTO table_photo (url, photo) VALUES (%s, %s)"""
mycursor.execute(sql, (pic_url, photo))
connection.commit()  # save to database

最佳答案

您的代码看起来不错。在使用PIL读取图像并将其存储在数据库中之后,您看到的区别是PIL需要从文件流而不是字节数组中打开数据。由于不需要文件流,因此可以跳过(c)StringIO步骤。

我对您的代码的唯一评论是,请记住,由于您没有将文件作为图像打开,因此不能保证将图像插入数据库。您只是存储返回的所有内容作为对HTTP调用的响应。您可能会发现,在PIL中打开文件以确保将其解析为图像更为安全。

关于python - Python:使用请求读取图像(URL),然后另存为BLOB数据到MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34077942/

10-12 22:34
查看更多