PyQt5显示数据库数据并自动刷新
时间: 2024-05-12 21:13:15 浏览: 220
要显示数据库数据并自动刷新,你可以使用QTimer定时器来更新显示的数据。下面是一个示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView
from PyQt5.QtCore import QTimer
from PyQt5.QtSql import QSqlTableModel, QSqlDatabase, QSqlQuery
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 初始化数据库
self.db = QSqlDatabase.addDatabase('QMYSQL')
self.db.setHostName('localhost')
self.db.setDatabaseName('test')
self.db.setUserName('root')
self.db.setPassword('password')
if not self.db.open():
print('数据库连接失败')
sys.exit(1)
# 初始化表格模型
self.model = QSqlTableModel()
self.model.setTable('person')
self.model.select()
# 初始化表格视图
self.table_view = QTableView()
self.table_view.setModel(self.model)
self.setCentralWidget(self.table_view)
# 初始化定时器
self.timer = QTimer(self)
self.timer.timeout.connect(self.refresh_data)
self.timer.start(5000) # 每5秒刷新一次
def refresh_data(self):
# 使用查询来更新模型
query = QSqlQuery('SELECT * FROM person', self.db)
self.model.setQuery(query)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个示例代码中,我们使用了QSqlTableModel来显示数据库数据,并且使用QTimer定时器来自动刷新数据。在refresh_data()方法中,我们使用了QSqlQuery来查询数据库并更新模型。每次定时器超时时,都会调用refresh_data()方法来刷新数据。
阅读全文