在PyQt中,可以使用Qt SQL模塊來連接和操作數據庫,包括進行數據篩選。以下是一個簡單的示例,展示了如何使用PyQt5和Qt SQL模塊來連接SQLite數據庫并進行數據篩選:
首先,確保已經安裝了PyQt5和Qt SQL模塊。如果尚未安裝,可以使用以下命令進行安裝:
pip install PyQt5
接下來,創建一個簡單的PyQt應用程序,并連接到SQLite數據庫。在這個示例中,我們將連接到一個名為example.db
的數據庫,該數據庫包含一個名為employees
的表。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QVBoxLayout, QWidget, QPushButton, QLineEdit
import sqlite3
from PyQt5.QtSql import QSqlDatabase, QSqlQueryModel, QSqlQuery
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 創建一個QTableView控件來顯示數據
self.tableView = QTableView()
# 創建一個QLineEdit控件來輸入篩選條件
self.filterEdit = QLineEdit()
# 創建一個QPushButton控件來執行篩選操作
self.filterButton = QPushButton("篩選")
self.filterButton.clicked.connect(self.filterData)
# 創建一個垂直布局并將控件添加到布局中
layout = QVBoxLayout()
layout.addWidget(self.filterEdit)
layout.addWidget(self.filterButton)
# 創建一個QWidget控件并將布局添加到控件中
container = QWidget()
container.setLayout(layout)
# 將QTableView控件添加到主窗口的中心區域
self.setCentralWidget(container)
# 連接到SQLite數據庫
db = QSqlDatabase.addDatabase("QSQLITE")
db.setHostName("")
db.setDatabaseName("example.db")
db.open()
# 創建一個QSqlQueryModel控件來存儲查詢結果
self.queryModel = QSqlQueryModel()
# 創建一個QSqlQuery控件來執行SQL查詢
self.query = QSqlQuery()
self.query.exec_("SELECT * FROM employees")
# 將查詢結果設置到QSqlQueryModel控件中
self.queryModel.setQuery(self.query)
# 將QSqlQueryModel控件設置為QTableView控件的模型
self.tableView.setModel(self.queryModel)
def filterData(self):
# 獲取篩選條件
filterText = self.filterEdit.text()
# 創建一個新的QSqlQuery控件
query = QSqlQuery()
# 如果篩選條件不為空,則添加WHERE子句
if filterText:
query.prepare("SELECT * FROM employees WHERE name LIKE :name")
query.bindValue(":name", "%" + filterText + "%")
else:
query.prepare("SELECT * FROM employees")
# 執行查詢并更新QSqlQueryModel控件中的數據
query.exec_()
self.queryModel.setQuery(query)
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
在這個示例中,我們創建了一個簡單的界面,其中包含一個用于輸入篩選條件的QLineEdit控件和一個用于執行篩選操作的QPushButton控件。當用戶點擊按鈕時,將調用filterData
方法來執行篩選操作。
在filterData
方法中,我們首先獲取篩選條件,然后創建一個新的QSqlQuery控件。如果篩選條件不為空,我們會在SQL查詢中添加一個WHERE子句,并使用LIKE操作符來匹配包含篩選條件的名稱。如果篩選條件為空,我們將執行一個簡單的SELECT查詢。
最后,我們執行查詢并更新QSqlQueryModel控件中的數據,從而刷新QTableView控件中顯示的數據。