Как вывести изображение форматом blob в QLabel из бд sqlite3?

Суть в том, что мне нужно из БД вывести изображение на месте HELLO, т.е в QLabel, пытаюсь вывести следующим образом -

sqlite_blob_query = """SELECT photo FROM Album WHERE id = 1"""
cursor.execute(sqlite_blob_query)
record1 = cursor.fetchone()[0]

# pix = QPixmap()
# pix.loadFromData(record1.data())
# self.label.setPixmap(pix)

self.label.setText(_translate("Form", record1))

Выглядит это так:

Рис 1


main.py:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import QHeaderView
from PyQt5.QtGui import QPixmap
import sqlite3
import sys

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(723, 384)
        Form.setMinimumSize(QtCore.QSize(723, 384))
        Form.setMaximumSize(QtCore.QSize(723, 384))
        self.tabWidget = QtWidgets.QTabWidget(Form)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 731, 391))
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tableWidget = QtWidgets.QTableWidget(self.tab)
        self.tableWidget.setGeometry(QtCore.QRect(10, 150, 701, 111))
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(10)
        self.tableWidget.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(9, item)
        self.plainTextEdit = QtWidgets.QPlainTextEdit(self.tab)
        self.plainTextEdit.setGeometry(QtCore.QRect(10, 270, 701, 81))
        self.plainTextEdit.setBackgroundVisible(False)
        self.plainTextEdit.setCenterOnScroll(False)
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.label = QtWidgets.QLabel(self.tab)
        self.label.setGeometry(QtCore.QRect(490, -10, 221, 151))
        self.label.setStyleSheet("")
        self.label.setObjectName("label")
        self.label_5 = QtWidgets.QLabel(self.tab)
        self.label_5.setGeometry(QtCore.QRect(10, 130, 71, 16))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.tab)
        self.label_6.setGeometry(QtCore.QRect(10, 10, 81, 16))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.tab)
        self.label_7.setGeometry(QtCore.QRect(10, 30, 121, 16))
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.tab)
        self.label_8.setGeometry(QtCore.QRect(10, 50, 161, 16))
        self.label_8.setObjectName("label_8")
        self.tabWidget.addTab(self.tab, "")

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):

        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
        self.tableWidget.horizontalHeader().setMinimumSectionSize(0)

        _translate = QtCore.QCoreApplication.translate
        
        self.row_count = 1
        self.table_index = 0

        sqlite_connection = sqlite3.connect("Autosalon.db")
        cursor = sqlite_connection.cursor()

        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Автомобили"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Код"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Название"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Скорость(км\\ч)"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Разгон(с)"))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("Form", "Объем(см3)"))
        item = self.tableWidget.horizontalHeaderItem(5)
        item.setText(_translate("Form", "Мощность"))
        item = self.tableWidget.horizontalHeaderItem(6)
        item.setText(_translate("Form", "Расход(л)"))
        item = self.tableWidget.horizontalHeaderItem(7)
        item.setText(_translate("Form", "Стоимость"))
        item = self.tableWidget.horizontalHeaderItem(8)
        item.setText(_translate("Form", "Кузов"))
        item = self.tableWidget.horizontalHeaderItem(9)
        item.setText(_translate("Form", "Трансмиссия"))

        sqlite_select_query = """SELECT * FROM Авто WHERE Название LIKE 'Audi A3%'"""
        cursor.execute(sqlite_select_query)
        records = cursor.fetchall()

        for row in records:
            self.tableWidget.setRowCount(self.row_count)
            self.tableWidget.setItem(self.table_index, 0, QtWidgets.QTableWidgetItem(str(row[0])))
            self.tableWidget.setItem(self.table_index, 1, QtWidgets.QTableWidgetItem(str(row[1])))
            self.tableWidget.setItem(self.table_index, 2, QtWidgets.QTableWidgetItem(str(row[2])))
            self.tableWidget.setItem(self.table_index, 3, QtWidgets.QTableWidgetItem(str(row[3])))
            self.tableWidget.setItem(self.table_index, 4, QtWidgets.QTableWidgetItem(str(row[4])))
            self.tableWidget.setItem(self.table_index, 5, QtWidgets.QTableWidgetItem(str(row[5])))
            self.tableWidget.setItem(self.table_index, 6, QtWidgets.QTableWidgetItem(str(row[6])))
            self.tableWidget.setItem(self.table_index, 7, QtWidgets.QTableWidgetItem(str(row[7])))
            self.tableWidget.setItem(self.table_index, 8, QtWidgets.QTableWidgetItem(str(row[8])))
            self.tableWidget.setItem(self.table_index, 9, QtWidgets.QTableWidgetItem(str(row[9])))

            self.table_index += 1
            self.row_count += 1

        sqlite_blob_query = """SELECT photo FROM Album WHERE id = 1"""
        cursor.execute(sqlite_blob_query)
        record1 = cursor.fetchone()[0]

        # pix = QPixmap()
        # pix.loadFromData(record1.data())
        # self.label.setPixmap(pix)

        self.label.setText(_translate("Form", record1))

        self.plainTextEdit.setPlainText(_translate("Form", "Семейство хэтчбеков A3 представляет Audi в C-классе. Довольно широкий выбор бензиновых и дизельных силовых агрегатов мощностью от 102 до 250 л. с., а также наличие различных вариантов оснащения дают потенциальным покупателям больше возможностей для выбора подходящего автомобиля. В начале 2007 года "))
        self.label_5.setText(_translate("Form", "Модификация"))
        self.label_6.setText(_translate("Form", "Марка: Audi A3"))
        self.label_7.setText(_translate("Form", "Модельный год: 2012"))
        self.label_8.setText(_translate("Form", "Объем багажника(л): 350-1080"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "Audi A3"))

        cursor.close()
        sqlite_connection.close()

Но выводится только вот это -

Рис 2

Вот так выглядит БД -

Рис 3

Как правильно вывести ?
Или м.б. есть другие типы данных из которых удобнее выводить изображения ?


Ответы (1 шт):

Автор решения: S. Nick

Вы сильно продвинулись в плане составления минимально-воспроизводимого примера, но не достигли совершенства.
Воспроизводимый это, когда копируешь пример и запускаешь его.
В моем ответе на предыдущий ваш вопрос я вам показал как это выглядит.

Основываясь на БД из моего ответе на предыдущий ваш вопрос, демонстрирую (как вариант) как вывести изображение в ячейку таблицы.

И некоторые советы для вас:

  • НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА. Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

  • фиксированная геометрия, это не очень хорошо, вместо этого используйте менеджеры компоновки https://doc.qt.io/qt-5/layout.html , которые также можно легко создать в Designer https://doc.qt.io/qt-5/designer-layouts.html .


import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import QHeaderView
from PyQt5.QtGui import QPixmap
import sqlite3


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(723, 584)                                                # 384
#        Form.setMinimumSize(QtCore.QSize(723, 384))
#        Form.setMaximumSize(QtCore.QSize(723, 384))
        self.tabWidget = QtWidgets.QTabWidget(Form)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 731, 591))             # 391 
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tableWidget = QtWidgets.QTableWidget(self.tab)
        self.tableWidget.setGeometry(QtCore.QRect(10, 150, 701, 311))        # 111
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(10)
        self.tableWidget.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(9, item)
        self.plainTextEdit = QtWidgets.QPlainTextEdit(self.tab)
        self.plainTextEdit.setGeometry(QtCore.QRect(10, 470, 701, 81))       # (10, 270, 701, 81)
        self.plainTextEdit.setBackgroundVisible(False)
        self.plainTextEdit.setCenterOnScroll(False)
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.label = QtWidgets.QLabel(self.tab)
        self.label.setGeometry(QtCore.QRect(490, -10, 221, 151))
        self.label.setStyleSheet("")
        self.label.setObjectName("label")
        self.label_5 = QtWidgets.QLabel(self.tab)
        self.label_5.setGeometry(QtCore.QRect(10, 130, 71, 16))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.tab)
        self.label_6.setGeometry(QtCore.QRect(10, 10, 81, 16))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.tab)
        self.label_7.setGeometry(QtCore.QRect(10, 30, 121, 16))
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.tab)
        self.label_8.setGeometry(QtCore.QRect(10, 50, 161, 16))
        self.label_8.setObjectName("label_8")
        self.tabWidget.addTab(self.tab, "")

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
        self.tableWidget.horizontalHeader().setMinimumSectionSize(0)
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Автомобили"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Код"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Название"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Скорость(км\\ч)"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Разгон(с)"))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("Form", "Объем(см3)"))
        item = self.tableWidget.horizontalHeaderItem(5)
        item.setText(_translate("Form", "Мощность"))
        item = self.tableWidget.horizontalHeaderItem(6)
        item.setText(_translate("Form", "Расход(л)"))
        item = self.tableWidget.horizontalHeaderItem(7)
        item.setText(_translate("Form", "Стоимость"))
        item = self.tableWidget.horizontalHeaderItem(8)
        item.setText(_translate("Form", "Кузов"))
        item = self.tableWidget.horizontalHeaderItem(9)
        item.setText(_translate("Form", "Трансмиссия"))
        self.plainTextEdit.setPlainText(_translate("Form", "Семейство хэтчбеков A3 представляет Audi в C-классе. Довольно широкий выбор бензиновых и дизельных силовых агрегатов мощностью от 102 до 250 л. с., а также наличие различных вариантов оснащения дают потенциальным покупателям больше возможностей для выбора подходящего автомобиля. В начале 2007 года "))
        self.label_5.setText(_translate("Form", "Модификация"))
        self.label_6.setText(_translate("Form", "Марка: Audi A3"))
        self.label_7.setText(_translate("Form", "Модельный год: 2012"))
        self.label_8.setText(_translate("Form", "Объем багажника(л): 350-1080"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "Audi A3"))
        

class Demo(QtWidgets.QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.row_count = 1
#        self.table_index = 0

#        sqlite_connection = sqlite3.connect("Autosalon.db")
        sqlite_connection = sqlite3.connect("testImage.db")                    # установить свое
        cursor = sqlite_connection.cursor()        

#        sqlite_select_query = """SELECT * FROM Авто WHERE Название LIKE 'Audi A3%'""" # установить свое
        sqlite_select_query = """SELECT * FROM imgTable"""
        
        cursor.execute(sqlite_select_query)
        records = cursor.fetchall()
#        print(type(records), records[0][0], records[0][1])

        self.tableWidget.verticalHeader().setDefaultSectionSize(100)               # +++
                
        for i, row in enumerate(records):
            self.tableWidget.setRowCount(self.row_count)
            self.tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem(str(row[0])))
            self.tableWidget.setItem(i, 1, QtWidgets.QTableWidgetItem(str(row[1])))
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
            label = QtWidgets.QLabel() 
            pix = QPixmap()
            pix.loadFromData(row[2]) 

            _size = QtCore.QSize(200, 100) 
            label.setPixmap(pix.scaled(_size, QtCore.Qt.KeepAspectRatio))

#            self.tableWidget.setItem(self.table_index, 2, QtWidgets.QTableWidgetItem(str(row[2])))
            self.tableWidget.setCellWidget(i, 2, label)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#            self.table_index += 1
            self.row_count += 1        
        cursor.close()
        sqlite_connection.close()
        

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Demo()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения


Update

То что вы вставили их в таблицу - это хорошо, но как их в label вставлять ?

Я не нашел в вашем примере HELLO, поэтому вставил на свое усмотрение:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import QHeaderView
from PyQt5.QtGui import QPixmap
import sqlite3



class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(723, 584)                                                # 384
#        Form.setMinimumSize(QtCore.QSize(723, 384))
#        Form.setMaximumSize(QtCore.QSize(723, 384))
        self.tabWidget = QtWidgets.QTabWidget(Form)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 731, 591))             # 391 
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tableWidget = QtWidgets.QTableWidget(self.tab)
        self.tableWidget.setGeometry(QtCore.QRect(10, 150, 701, 311))        # 111
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(10)
        self.tableWidget.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(9, item)
        self.plainTextEdit = QtWidgets.QPlainTextEdit(self.tab)
        self.plainTextEdit.setGeometry(QtCore.QRect(10, 470, 701, 81))       # (10, 270, 701, 81)
        self.plainTextEdit.setBackgroundVisible(False)
        self.plainTextEdit.setCenterOnScroll(False)
        self.plainTextEdit.setObjectName("plainTextEdit")

        self.label = QtWidgets.QLabel('Htllo World!', self.tab)
#        self.label.setGeometry(QtCore.QRect(490, -10, 221, 151))
        self.label.setGeometry(QtCore.QRect(215, 10, 200, 100))              # +++
        
        self.label.setStyleSheet("background-color: #f3f4ed;")               # +++
        self.label.setObjectName("label")
        
        
        self.label_5 = QtWidgets.QLabel(self.tab)
        self.label_5.setGeometry(QtCore.QRect(10, 130, 71, 16))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.tab)
        self.label_6.setGeometry(QtCore.QRect(10, 10, 81, 16))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.tab)
        self.label_7.setGeometry(QtCore.QRect(10, 30, 121, 16))
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.tab)
        self.label_8.setGeometry(QtCore.QRect(10, 50, 161, 16))
        self.label_8.setObjectName("label_8")
        self.tabWidget.addTab(self.tab, "")

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
        self.tableWidget.horizontalHeader().setMinimumSectionSize(0)
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Автомобили"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Код"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Название"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Скорость(км\\ч)"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Разгон(с)"))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("Form", "Объем(см3)"))
        item = self.tableWidget.horizontalHeaderItem(5)
        item.setText(_translate("Form", "Мощность"))
        item = self.tableWidget.horizontalHeaderItem(6)
        item.setText(_translate("Form", "Расход(л)"))
        item = self.tableWidget.horizontalHeaderItem(7)
        item.setText(_translate("Form", "Стоимость"))
        item = self.tableWidget.horizontalHeaderItem(8)
        item.setText(_translate("Form", "Кузов"))
        item = self.tableWidget.horizontalHeaderItem(9)
        item.setText(_translate("Form", "Трансмиссия"))
        self.plainTextEdit.setPlainText(_translate("Form", "Семейство хэтчбеков A3 представляет Audi в C-классе. Довольно широкий выбор бензиновых и дизельных силовых агрегатов мощностью от 102 до 250 л. с., а также наличие различных вариантов оснащения дают потенциальным покупателям больше возможностей для выбора подходящего автомобиля. В начале 2007 года "))
        self.label_5.setText(_translate("Form", "Модификация"))
        self.label_6.setText(_translate("Form", "Марка: Audi A3"))
        self.label_7.setText(_translate("Form", "Модельный год: 2012"))
        self.label_8.setText(_translate("Form", "Объем багажника(л): 350-1080"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "Audi A3"))
        

class Demo(QtWidgets.QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.row_count = 1
#        self.table_index = 0

#        sqlite_connection = sqlite3.connect("Autosalon.db")
        sqlite_connection = sqlite3.connect("testImage.db")                    # установить свое
        cursor = sqlite_connection.cursor()        

#        sqlite_select_query = """SELECT * FROM Авто WHERE Название LIKE 'Audi A3%'""" # установить свое
        sqlite_select_query = """SELECT * FROM imgTable"""
        
        cursor.execute(sqlite_select_query)
        records = cursor.fetchall()
#        print(type(records), records[0][0], records[0][1])

        self.tableWidget.verticalHeader().setDefaultSectionSize(100)               # +++
                
        for i, row in enumerate(records):
            self.tableWidget.setRowCount(self.row_count)
            self.tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem(str(row[0])))
            self.tableWidget.setItem(i, 1, QtWidgets.QTableWidgetItem(str(row[1])))
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
            label = QtWidgets.QLabel() 
            pix = QPixmap()
            pix.loadFromData(row[2]) 

            _size = QtCore.QSize(200, 100) 
            label.setPixmap(pix.scaled(_size, QtCore.Qt.KeepAspectRatio))

#            self.tableWidget.setItem(self.table_index, 2, QtWidgets.QTableWidgetItem(str(row[2])))
            self.tableWidget.setCellWidget(i, 2, label)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#            self.table_index += 1
            self.row_count += 1        
        cursor.close()
        sqlite_connection.close()

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv        
        self.tableWidget.cellClicked.connect(self.row_column_clicked)
        
    def row_column_clicked(self, row, column):  
        #print(f'clicked: row={row}, column={column}')
        widget = self.tableWidget.cellWidget(row, 2)
        self.label.setPixmap(widget.pixmap())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Demo()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка