2017-02-17 2 views
0

Comment insérer un objet bytes dans une base de données. Chaque fois que je tente cela, je me retrouve avec une chaîne vide (pas NULL) en cours d'insertion.Impossible d'insérer des octets dans pyqt5

with open(filepath, 'rb') as f: 
    filehash = hashlib.md5(f.read()).hexdigest() 
img_pkl = pickle.dumps(img, protocol=4) 

record = self.tablemodel.record() 
record.setValue('originfile_path', filepath) 
record.setValue('originfile_hash', filehash) 
record.setValue('image', img_pkl) 
record.setValue('area', area) 
self.tablemodel.insertRecord(-1, record) 

Le problème a été noté sur la liste de diffusion mais n'a jamais été résolu. https://www.riverbankcomputing.com/pipermail/pyqt/2016-April/037260.html Il se également qu'il est plus logique d'utiliser le modèle de table quand vous pouvez au lieu des déclarations préparées (il a également noté un bogue dans PyQt en ce qui concerne exec() vs exec_().

Répondre

0

Vous devez explicitement convertir . un QByteArray

record.setValue('image', QtCore.QByteArray(img_pkl)) 

note: vous devez également convertir des objets numpy.float64 en utilisant float()