|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 guardianpeak 于 2020-8-24 21:44 编辑
#### 求助描述与问题:
- 数据读取速度很正常(可在access_select模块中单独测试),但是在循环写入时会耗费很长时间,目前数据库中只有几百条数据,经测试需要10秒左右才能展现出来
- 真正使用的数据库是sqlserver,正常查询时可能会有上万条数据,自己测试过16列4000行数据的情况需要近一个小时才会展示出数据,毫无可用性。
- 目前不知道是PYQT5的问题还是可以有更好的写入方法,求大神给予帮助
具体描述与代码在附件中
本帖最后由 hrp 于 2020-8-24 23:12 编辑
应该是重复运行 table_item.select_access() 方法导致的,我没有测试环境,也不怎么会数据库,随手改了一下,你试试。
table_pane.py 文件
- from PyQt5.Qt import *
- from table import Ui_Form
- from access_select import Select_Table
- import sys
- class tablepane(QWidget, Ui_Form):
- table_close_signal = pyqtSignal()
- def __init__(self, parent=None):
- super().__init__(parent)
- self.setupUi(self)
- # 发射自定义关闭按钮的信号
- def table_close(self):
- self.table_close_signal.emit()
- # 原定发射信号由MAIN模块来处理,后决定并入本模块自行处理
- # def table_show(self):
- # self.table_show_signal.emit()
- # 本模块自行处理表格展示的函数
- def table_show(self):
- # 实例化关联数据库的Select_Table类
- table_item = Select_Table()
- # 获取查询结果的列与行数
- lst = table_item.select_access()
- column = len(lst[0])
- row = len(lst)
- # 建立行数
- self.tableWidget.setRowCount(row)
- # 循环写入表内数据
- for i in range(row):
- for j in range(column):
- self.tableWidget.setItem(i, j, QTableWidgetItem(str(lst[i][j])))
- # 关闭数据连接
- table_item.close_odbc()
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- window = tablepane()
- window.show()
- sys.exit(app.exec_())
复制代码
|
|