簡體   English   中英

將 MySQL 數據庫中的數據顯示到 qtableview python pyqt5

[英]display data from MySQL database to qtableview python pyqt5

我在 CRUD 方法中遇到了問題,我使用的是 pyqt5 和 python 3.9,我想顯示數據庫中的數據並將其呈現到 qtableview 中,我有兩個問題,第一個方法不起作用,第二個是:i不知道如何自動使該功能起作用,我希望在導航到界面時激活該應用程序,以使每個老師都能看到他擁有的學生

這是我的代碼

連接= mc.connect(主機=cr.host,用戶=cr.user,密碼=cr.password,數據庫=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()

如果您想自動顯示數據,請不要使用方法,因為如果您願意,您應該調用它。 代碼會很亂,但它會為你工作。

幾個月前,我使用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是表名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM