sql >> Base de Datos >  >> RDS >> Mysql

Insertar archivo de imagen con PyQt5 en la columna de la tabla de la base de datos MySQL

No debe concatenar las variables para crear la consulta, sino usar los marcadores de posición, de lo contrario, su código será susceptible a los ataques de inyección SQL. Por otro lado, debes convertir el QPixmap, no el texto, en bytes usando un QBuffer como intermediario:

con = MySQLdb.connect(host="localhost", user="root", password="", database="somedb")
with con:
    cur = con.cursor()
    name = self.ui.name_edit.text()
    buff = QBuffer()
    buff.open(QIODevice.WriteOnly)
    pixmap = QPixmap(self.ui.image_label.pixmap())
    pixmap.save(buff, "PNG")
    binary_img = buff.data().toBase64().data()
    cur.execute("INSERT INTO persons(name, photo) VALUES (%s, %s)", (name, binary_img))
    con.commit()



No