Python:使用请求读取图像(url),然后将BLOB数据另存为MySQL

时间:2015-12-03 23:04:46

标签: python mysql image blob python-requests

假设我使用请求打开图片网址并读取数据,将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

1 个答案:

答案 0 :(得分:0)

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

我对您的代码的唯一评论是您应该记住,因为您没有将文件作为图像打开,所以您无法保证将图像插入到数据库中。您只是存储您收到的任何内容作为对HTTP呼叫的响应。您可能会发现在PIL中打开文件更安全,只是为了确保它作为图像进行解析。