2017-02-17 3 views
0

Как вы вставляете объект байтов в базу данных. Всякий раз, когда я пытаюсь это сделать, я получаю пустую строку (но не NULL).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) 

Вопрос был отмечен в списке рассылки, но не был адресован. https://www.riverbankcomputing.com/pipermail/pyqt/2016-April/037260.html Кроме того, оказалось, что это имеет смысл использовать модель таблицы, когда вы можете вместо подготовленных заявлений (он также отметил, ошибка в PyQt относительно Exec() против exec_().

ответ

0

Вы должны явно преобразовать в . QByteArray

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

Примечание: вы также должны преобразовать объекты numpy.float64 с помощью поплавка()

Смежные вопросы