在PyQt中,使用SQL對(duì)數(shù)據(jù)進(jìn)行排序通常涉及以下步驟:
下面是一個(gè)簡(jiǎn)單的示例代碼,演示了如何在PyQt中使用SQL對(duì)數(shù)據(jù)進(jìn)行排序:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QVBoxLayout, QWidget
from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 創(chuàng)建數(shù)據(jù)庫連接
db = QSqlDatabase.addDatabase('QSQLITE')
db.setHostName('localhost')
db.setDatabaseName('test.db')
db.setUserName('')
db.setPassword('')
if not db.open():
print("無法連接到數(shù)據(jù)庫")
return
# 創(chuàng)建查詢對(duì)象
query = QSqlQuery()
# 執(zhí)行SQL查詢,并按name列升序排序
query.exec_("SELECT * FROM users ORDER BY name ASC")
# 創(chuàng)建表格視圖,并設(shè)置模型
tableView = QTableView()
model = QSqlTableModel(tableView)
model.setTable('users')
model.select()
model.setSortCaseSensitivity(False)
model.setSortColumn(1) # 按第二列(name)排序
model.sort(1, Qt.AscendingOrder) # 使用Qt.AscendingOrder進(jìn)行升序排序
tableView.setModel(model)
# 設(shè)置窗口布局
widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(tableView)
widget.setLayout(layout)
self.setCentralWidget(widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
在這個(gè)示例中,我們創(chuàng)建了一個(gè)簡(jiǎn)單的PyQt應(yīng)用程序,它連接到一個(gè)SQLite數(shù)據(jù)庫,并從users
表中檢索所有數(shù)據(jù),然后按name
列的升序?qū)?shù)據(jù)進(jìn)行排序。最后,我們將排序后的結(jié)果顯示在一個(gè)表格視圖中。