AlanHorman AlanHorman - 1 month ago 18
Python Question

Python PyQt5: Store image data into a phpmyadmin database

I want to upload a .png file into my database.

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()


But something is wrong, because if I look in my local database the image is saved as binary file and I can't open or download it.
What can I do to upload an image into my database properly?

Answer

You just need to read the image file and store the data as a blob in the database:

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

To convert the blob into a pixmap:

pixmap = QtGui.QPixmap()
pixmap.loadFromData(blob)
Comments