Работаю с базой SQLite средствами QtSql. Одно из полей таблицы - блоб, где хранятся картинки. Вся работа с базой идет через модели QSqlTableModel, и когда пытаюсь сохранить картинку используя модель, то сохранения не происходит. Хотя все остальные поля сохраняются нормально.
bytes = QByteArray()
buffer = QBuffer( bytes )
photo = QPixmap()
photo.load( filename )
buffer.open( QIODevice.WriteOnly )
photo.save( buffer, "PNG" )
self.formsModel.record( row ).setValue( "pict", QVariant( bytes ) )
row содержит номер нужной записи, во все остальные поля (тестовые и числовые) записывать при помощи setValue получается.
А вот если загружать тот же файл в ту же таблицу через QSqlQuery, то все работает на ура
bytes = QByteArray()
buffer = QBuffer( bytes )
photo = QPixmap()
photo.load( filename )
buffer.open( QIODevice.WriteOnly )
photo.save( buffer, "PNG" )
query = QSqlQuery()
query.prepare( "UPDATE forms SET Pict = :p WHERE Id = :fid" )
query.bindValue( ":p", QVariant( bytes ) )
query.bindValue( ":p", QVariant( formId ) )
query.exec_()
Почему же через модель не удается сохранить? Не хочется ради одного поля заводить QSqlQuery