简体   繁体   中英

Using Flask Pymysql to serve image “GET” request , Error shows a bytes-like object is required, not 'dict'

def write_file(data, filename):
    with open(filename, 'wb') as f:
        f.write(data)

class DownloadPhoto(Resource):
def get(self,PhotoDefaultID):
    connection_DownloadPhoto = pymysql.connect(host='*******',
        user='root',
        password='*****',
        db='*******',
        charset='******',
        cursorclass=pymysql.cursors.DictCursor)
    try:
        with connection_DownloadPhoto.cursor() as cursor_DownloadPhoto:
            DownloadPhoto = "SELECT `PhotoData` FROM `app_phototable` WHERE `PhotoDefaultID` IN (%s)"
            cursor_DownloadPhoto.execute(DownloadPhoto, PhotoDefaultID)
            PhotoData = cursor_DownloadPhoto.fetchone()
            connection_DownloadPhoto.commit()
    finally:
        connection_DownloadPhoto.close()
    #write_file(data=PhotoData, filename="PhotoFile")
    write_file(PhotoData, "PhotoFile")
    return send_file(filename_or_fp= "PhotoFile", mimetype="image/jpeg"), 200

the code is here, and the debug shows "TypeError: a bytes-like object is required, not 'dict' // Werkzeug Debugger"

PhotoData is actually a dict type. You should think of the cursor result as a row with fields. ie

row = cursor_DownloadPhoto.fetchone()
PhotoData = row['PhotoData']

or crudely:

write_file(PhotoData['PhotoData'], "PhotoFile")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM