如何将列表中的行插入到 QSqlTableModel 中?
How to insert row from list into QSqlTableModel?
下面是我的示例代码。
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 来显示数据库 table 数据。并使用上面的代码插入数据。当插入新行时,QtableView 不会自动更新。每次都必须关闭并重新打开才能看到更新。
我的问题:是否有任何可能的方法使用 QSqlTableModel 将数据从 List 插入数据库。
如果你想重新加载整个 table 只需要使用 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()
下面是我的示例代码。
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 来显示数据库 table 数据。并使用上面的代码插入数据。当插入新行时,QtableView 不会自动更新。每次都必须关闭并重新打开才能看到更新。 我的问题:是否有任何可能的方法使用 QSqlTableModel 将数据从 List 插入数据库。
如果你想重新加载整个 table 只需要使用 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()