如何解决如何将列表中的行插入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显示数据库表数据。并使用上面的代码插入数据。插入新行时,QtableView不会自动更新。必须关闭并重新打开它才能看到更新。 我的问题:是否有使用QSqlTableModel将列表中的数据插入数据库的可行方法。
解决方法
如果要重新加载整个表,则仅需使用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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。