将 MySQL 数据库中的数据显示到 qtableview python pyqt5

display data from MySQL database to qtableview python pyqt5

我在 CRUD 方法中遇到问题,我正在使用 pyqt5 和 python 3.9,我想显示数据库中的数据并将其呈现到 qtable 视图中,我有两个问题第一个一个方法没有用,第二个是:我不知道如何自动使该功能起作用,我希望在导航到界面时激活应用程序,让每个老师都能看到他拥有的学生

这是我的代码

连接=mc.connect(主机=cr.host,用户=cr.user,密码=cr.password,数据库=cr.database) 当前 = connection.cursor()

        rows = "select count(*) from student"


        query = "SELECT Student_id, FirstName, LastName FROM student"


        cur.execute(query)

        result = cur.fetchall()
        print("heel")

        while query.next():
            print("heel")
            rows = self.view.rowCount()
            self.view.setRowCount(rows + 1)
            self.view.setItem(rows, 0, self.Student_List(str(query.value(0))))
            self.view.setItem(rows, 1, self.Student_List(query.value(1)))
            self.view.setItem(rows, 2, self.Student_List(query.value(2)))
            self.view.resizeColumnsToContents()

    except mc.Error as e:
        print(e)

这是我的table视图

self.model = QSqlTableModel(self)
        self.model.setTable("contacts")
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.model.setHeaderData(0, Qt.Horizontal, "Student_id")
        self.model.setHeaderData(1, Qt.Horizontal, "FirstName")
        self.model.setHeaderData(2, Qt.Horizontal, "LastName")

        self.model.select()

如果你想自动显示数据,不要使用方法,因为如果你想你应该调用它。代码会很乱,但对你有用。

几个月前,我使用 table 小部件 创建了一个 CRUD 应用程序,但如果您只想显示数据,则应该使用 table查看.

如果您想使用 qtablewidget,此代码将适用于您,但如果您使用 tableview 你应该创建模型或使用 pyqt 预定义 类

try:

    connection = mc.connect(host=cr.host, user=cr.user, password=cr.password, database=cr.database)

    cur = connection.cursor()
    cur.execute("SELECT * FROM student")

    result = cur.fetchall()
    self.list.setRowCount(0)
    print("ff")
    for row_number, row_data in enumerate(result):
        self.list.insertRow(row_number)

        for column_number, data in enumerate(row_data):
             self.list.setItem(row_number, zcolumn_number, QTableWidgetItem(str(data)))

except mc.Error as e:
    print(e)

注意:list是table

的名称