显示数据从MySQL数据库到qtableview python pyqt5



我在CRUD方法中遇到了问题,我使用pyqt5和python 3.9,我想从数据库中显示数据并将其呈现为qtableview,我有两个问题,第一个方法没有工作,第二个问题是:我不知道如何自动使函数工作,我希望应用程序在我导航到界面时激活,使每个老师看到他的学生

这是我的代码

connection = Mc.connect (host=cr. connect)主机、用户= cr。用户、密码= cr。密码,数据库= cr.database)Cur = 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)

这是我的表视图

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()

如果您想自动显示数据,不要使用method,因为如果您想的话,您应该调用它。代码会很乱,但它会为你工作。

几个月前,我使用tablewidget创建了一个CRUD应用程序,但是如果你只想显示数据,你应该使用tableview

如果你想使用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为表名

最新更新