如何将列表中的行插入到QSqlTableModel中?

2024-02-21

下面是我的示例代码。

class UI(QMainWindow):
    def __init__(self):
        super(UI, self).__init__()
        uic.loadUi("tableview.ui", self)
        self.show()

        db = QSqlDatabase.addDatabase('QSQLITE')
        db.setDatabaseName('book.db')
        db.open()

        self.model = QtSql.QSqlTableModel(self)
        self.model.setTable("card")
        self.model.select()
        self.tableView.setModel(self.model)

        self.pushButton.clicked.connect(self.edit_items)
        self.add.clicked.connect(self.add_row)

    def add_row(self):
        data_row = ["name", 30, "M"]
        con = sqlite3.connect('book.db')
        con.execute("INSERT INTO card(name, age, gender) VALUES (?,?,?)", data_row + [''] * (3 -len(data_row)))
        con.commit()

我正在使用 QtSql.QSqlTableModel 和 QtableView 来显示数据库表数据。并使用上面的代码插入数据。插入新行时,QtableView 不会自动更新。每次都必须关闭并重新打开才能看到更新。 我的问题:有没有可能使用 QSqlTableModel 将数据从 List 插入数据库。


如果你想重新加载整个表,只需要使用 select 方法,另一方面,如果你想使用 QSqlTableModel 插入行,那么你必须使用 QSqlRecord:

def add_row(self):
    r = self.model.record()
    r.setValue("name", "name")
    r.setValue("age", 30)
    r.setValue("gender", "M")
    self.model.insertRecord(-1, r)
    self.model.select()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将列表中的行插入到QSqlTableModel中? 的相关文章

随机推荐