dbeaver导入excel文件_PyQT5练习:制作Excel文件导入MySQL窗口

e8bca9ac10d340ec34efc980ca9ebe0b.png

本文环境配置:

系统=>windows10:64位

工具=>PyCharm:2018.3.1

语言=>Python:3.7.1

第三方库

PyQT5:5.11.3
pyqt5-tools:5.11.3.1.4
PyMySQL:0.9.3
openpyxl:2.5.12

练手:制作一个数据库导入窗口


Qt Designer设计界面

53553b172fc7bf3a9018022062678e3b.png

控件元素:

3个QLabel:第一个label在最下方,用于显示执行的时间,其余两个为标签
1个QLineEdit:显示文件的路径地址
1个QListWidget:显示打开的工作簿中所有的工作表名
2两个QPushButton:执行按钮

信号与槽:

"打开" 按钮对应槽函数:open()
"导入"按钮对应槽函数:to_mysql()
工作表名列集合对应的槽函数:set_tobtn()

编写代码

.ui文件转换成.py文件,然后新建一个业务逻辑文件,把界面文件import导入

木子-李:PyCharm中Qt Designer+PyUIC配置​zhuanlan.zhihu.com
8c51d1bde72f5ecd7ce60d5857189f26.png

ec7cf016aff835a8973dfc4b69ca2e73.png

open函数:

e5c6aaf575ac2d0ecec9cb31c1765179.png

初始化"导入"按钮不可用,清空表名列集合

self.pushButton_2.setEnabled(False)
self.listWidget.clear()

调出选择文件对话框,可以默认打开的路径,以及筛选文件后缀

将选择的文件完整路径显示在lineEdit文本框中

filename, _ = QFileDialog.getOpenFileName(self,
                                                  '选择文件',
                                                  'G:projectExcel_to_MySQL',
                                                  'Excel files(*.xlsx , *.xls)')
self.lineEdit_2.setText(filename)

用第三方库openpyxl打开选择的工作簿,采用只读模式read_only=True

self.wb.sheetnames获取打开工作簿的所有工作表,然后添加到listWidget

self.wb = openpyxl.load_workbook(filename, read_only=True)
self.sheets = self.wb.sheetnames
self.listWidget.addItems(self.sheets)

set_tobtn函数:

3a7ed38a2347cb243bfa12b6224fa52c.png

默认"导入"按钮不能点击,当表名列集合被点击了,就执行set_tobtn函数,然后将"导入"按钮设置为可用。

to_mysql函数:

0747a30947bbfe232253f950bc5b7d22.png

pymysql链接数据库

木子-李:Python操作MySQL数据库​zhuanlan.zhihu.com
e1cc962af77d58c6fbede63119296fca.png

打开选中的表self.wb[表名] ,表名根据选中listWidget返回self.listWidget.currentItem().text()

sheet = self.wb[self.listWidget.currentItem().text()]  # 打开选中的表

sheet.max_row:返回最大行数

sheet.max_column:返回最大列数

executemany(templet,args)

能同时执行多条语句,执行同样多的语句可比execute()快很多,强烈建议执行多条语句时使用executemany

templet : sql模板字符串,
例如 'insert into table(id,name) values(%s,%s)'
args: 模板字符串的参数,是一个列表,列表中的每一个元素必须是元组!!!
例如: [(1,'小明'),(2,'zeke'),(3,'琦琦'),(4,'韩梅梅')]

最终完成效果,其实SQL执行才0.11秒,然而前面的循环用了12秒。不到300的数据啊

270ac36dcdcc00a12dfb598b26396da6.png
https://www.zhihu.com/video/1068290363336355840

这一坨代码速度好慢,有待优化,望大神指教:

1d6f1dce272ab27b9545dfa2d9c0e702.png
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dbeaver可以用于导入Excel数据到数据库。首先,需要在dbeaver中一个新的结构可以通过SQL新建或使用工具填写名和字段来创建。接下来,选择对应的名,右键点击并选择"导入数据"选项。在导入参数中,你需要设置一些参数,包括文件扩展名、编码方式、列分隔符等。你还需要确保元数据的列名与名称一致。在导入之前,你可以查看导入列的映射关系是否正确。如果导入的数据不完整,你可以尝试重新导入或使用truncate截断再进行导入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [将excel数据导入到oracle数据库](https://download.csdn.net/download/u010700445/6522409)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [DBeaver导入Excel数据](https://blog.csdn.net/cx243698/article/details/127256574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [dbeaver导入excel数据](https://blog.csdn.net/qq_21271511/article/details/126826445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值