Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insertion d'un fichier image avec PyQt5 dans la colonne de la table de la base de données MySQL

Vous ne devez pas concaténer les variables pour construire la requête, mais plutôt utiliser les espaces réservés, sinon votre code sera sensible aux attaques par injection SQL. En revanche, vous devez convertir le QPixmap, et non le texte, en octets en utilisant un QBuffer comme intermédiaire :

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