鍍金池/ 問答/Python  數(shù)據(jù)庫(kù)/ python在mysql存儲(chǔ)圖片二進(jìn)制文件報(bào)錯(cuò)

python在mysql存儲(chǔ)圖片二進(jìn)制文件報(bào)錯(cuò)

with open('face.jpg','rb') as f:
    img_data=f.read()
find_binary=pymysql.Binary(img_data)
print(find_binary)
add_row="""INSERT INTO IMGS(ID,IMG,編號(hào),DATAIMG) VALUES(7,'K1','NO.','%s')""" % (find_binary)
cursor.execute(add_row)

下面是報(bào)錯(cuò)原因

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\\xff\\xd8\\xff\\xe0\\x00\\x10JFIF\\x00\\x01\\x01\\x01\\x00H\\x00H\\x00\\x00\\xff\\xdb\\x00C\\x00\\' at line 1")

好像是語法原因或者pymysql.binary輸出的根本就不是二進(jìn)制文件,但是不太清楚哪里錯(cuò)了,另外DATAIMG類型是mediumblob

回答
編輯回答
傲嬌范

SQL 操作用字符串拼接不是一個(gè)好的習(xí)慣, 試試用參數(shù)化查詢:

find_binary=pymysql.Binary(img_data)
add_row = """INSERT INTO IMGS(ID,IMG,編號(hào),DATAIMG) VALUES($s, %s, %s, %s)"""
cursor.execute(add_row, (7, 'K1', 'NO.', find_binary))
2018年4月21日 18:59