簡體   English   中英

將網絡文件上傳到python中的mysql

[英]upload web files to mysql in python

我是python的新手,正在尋找一種執行“復雜”任務的方法。

我需要將小的圖像(每個圖像小於1mb)存儲到數據庫的Image列(blob)中。 我的腳本當前檢索讀取文件所需的URL。 到目前為止,我還沒有找到方法來檢索圖像並將其上載到DB,而無需將其寫入HDD(以保留HDD)。

我目前正在使用URLlib2和MySQL Connector,並且如果可能的話,我希望保留它們,因為它們可同時在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:我知道在數據庫中存儲映像不是最佳解決方案,但是由於數據庫是跨設備同步的,並且某些數據庫可能需要脫機數據訪問,因此這些圖像需要存儲在該數據庫中。

在您的查詢中:

 wquery = ("UPDATE `cin`.`flags` SET `flag`='%s', `update_time`='%d' WHERE `name`='%s' AND `lockid`='%s'") % (pic_bin, update_time, names[index], lockid)

基本上,您要做的是使用字符串格式系統從二進制文件創建字符串。 在那里,python嘗試將每個參數轉換為字符串(即str(pic_bin) ),然后用該字符串替換匹配的%s 您應該改用游標的系統:

wquery = "UPDATE `cin`.`flags` SET `flag`='%s', `update_time`='%d' WHERE `name`='%s' AND `lockid`='%s'"
cursor.execute(wquery, (pic_bin, update_time, names[index], lockid))

看看像你這樣的其他問題

高溫超導

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM