PyQt5 用QSqlTableModel操作sql数据库(插入新的列和setFilter()的使用)

这篇主要是解决在pyqt5中,如何用QSqlTableModel模型为数据库添加新列,以及在执行查询操作时,如何使用setFilter()进行过滤。
添加新列之前:

 self.model = QSqlTableModel(self)
 self.model.setTable("reference")
 self.model.setSort(ID, Qt.AscendingOrder)
 self.model.setHeaderData(ID, Qt.Horizontal, "ID")
 self.model.setHeaderData(CATEGORY, Qt.Horizontal,"会议室")
 self.model.setHeaderData(SHORTDESC, Qt.Horizontal,"日期")
 self.model.setHeaderData(LONGDESC, Qt.Horizontal,"时间")
 self.model.select()

PyQt5 用QSqlTableModel操作sql数据库(插入新的列和setFilter()的使用)_第1张图片

添加新列的代码如下,若要添加新的列,则在self.select()之后添加:

self.model.insertColumn(4)#添加的新列的位置
self.model.setHeaderData(CONTACT, Qt.Horizontal, "联系人")

还可以以同样的方式添加行或多列;

self.model.insertRow(3)#添加的新行的位置
self.model.insertColumn(4)#添加多列
self.model.setHeaderData(CONTACT, Qt.Horizontal, "联系人")
self.model.insertColumn(5)
self.model.setHeaderData(COUNT, Qt.Horizontal, "可容纳人数")

QSqlTableModel对数据库的增加,删除等操作在网上都可以找到,那么如何用QSqlTableMode + QTableView对数据库进行查询,更新数据库表格呢

  def queryRecord(self):
        room_id = int(self.room_Edit.text())
        date_id = self.date_Edit.text()
        self.model.setFilter(("CATEGORY = '%d'" % (room_id)))
        self.model.setFilter(("SHORTDESC = '%s'" % (date_id)))
        self.model.select()

PyQt5 用QSqlTableModel操作sql数据库(插入新的列和setFilter()的使用)_第2张图片

也可以合并如下:

self.model.setFilter(("SHORTDESC = '%s' and CATEGORY = '%d'" % (date_id,room_id)))

你可能感兴趣的:(pyqt5,qt,sql)