我是 python 新手,正在寻找一种执行“复杂”任务的方法。
我需要将小图像(每个小于 1mb)存储到Image
我的数据库的列(blob)中。我的脚本当前检索读取文件所需的 URL。到目前为止,我还没有找到方法来检索图像并将它们上传到数据库而不将它们写入 HDD(以节省 HDD)。
我目前正在使用 URLlib2 和 MySQL 连接器,如果可能的话,我想继续使用它们,因为它们可以在 Windows 和 Debian 上运行。
codes = [xx, aa, ab] # This line is simulated as it is gerated by a long script run previously...
print "-> Downloading Flags..."
for code in codes:
if not code == 'xx':
filename = "%s-lgflag.gif" % code
url = "%s%s" % (flagurl, filename)
index = code.index(code)
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
infile = opener.open(url)
pic = infile.read()
update_time = int(time.time())
wquery = ("UPDATE `cin`.`flags` SET `flag`='%s', `update_time`='%d' WHERE `name`='%s' AND `lockid`='%s'") % (pic_bin, update_time, names[index], lockid)
cursor.execute(wquery)
cnx.commit()
sys.exit() ### Exit to make sure that I don't pass the whole list of 500+ flags
print "-> Flags downloaded"
此代码返回错误:
Traceback (most recent call last):
File "C:\Users\***\flagstest.py", line 61, in <module>
wquery = ("UPDATE `cin`.`flags` SET `flag`='%s', `update_time`='%d' WHERE `name`='%s' AND `lockid`='%s'") % (pic, update_time, names[index], lockid)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc1 in position 41: ordinal not in range(128)
希望任何人都可以帮助我找到一种解决方法...
PS:我知道将图像存储在数据库中并不是最好的解决方案,但是由于数据库是跨设备同步的,并且有些可能需要离线数据访问,所以这些图像需要存储在那里。