2016-10-29 106 views
0

我想上傳一個.png文件到我的數據庫中。Python PyQt5:將圖像數據存儲到phpmyadmin數據庫

fileName = QFileDialog().getOpenFileName() 
    filePath = str(fileName[0]) # Path of the image data 

    self.myImage = filePath 


    connection = pymysql.connect(host = 'localhost', 
    user = 'root', 
    db = 'mydatabase', 
    cursorclass = pymysql.cursors.DictCursor) 
    cur = connection.cursor() 

    cur.execute("INSERT INTO mytable VALUES('" + self.myImage + "')") 
    connection.commit() 

但什麼是錯的,因爲如果我看在我的本地數據庫中的圖像保存爲二進制文件,我無法打開或下載。 如何正確上傳圖像到我的數據庫?

+1

的圖像文件是什麼,但字節 - 就像任何其他文件一樣。爲什麼你不能打開或下載它?你有什麼嘗試?什麼*特別*出錯了?您問題中的代碼不會上傳文件;它只是將一個文件路徑插入到數據庫中。 – ekhumoro

+0

是的,這就是爲什麼它不起作用。如果我想下載「錯誤的路徑文件」,它會出現一個小的二進制文件,而不是一個圖像文件。你不能打開它,它是無用的。我想上傳文件而不是路徑。我認爲路徑是指文件,但不是。我必須做什麼來上傳圖像文件? –

回答

1

你只需要讀取圖像文件,並且將數據存儲在數據庫中的一個blob:

with open(filePath, 'rb') as stream: 
    blob = stream.read() 
    cur.execute("INSERT INTO mytable VALUES(%s)", [blob]) 

將BLOB轉換成一個象素圖:

pixmap = QtGui.QPixmap() 
pixmap.loadFromData(blob) 
+0

嘖嘖,謝謝ekhumoro :) –