python3 使用openpyxl将mysql数据写入xlsx的操作
编程的生活愈发不容易了,工作越来越难找,说多了都是泪还是给大家贡献些代码比较实际。
python3 链接数据库需要下载名为pymysql的第三方库
python3 读写xlsx需要下载名为openpyxl的第三方库
在此我只贡献链接数据库和写入xlsx的代码
import pymysql.cursors from fj.util import logger from openpyxl import Workbook from openpyxl.compat import range from openpyxl.utils import get_column_letter # 链接数据库的游标 connect = pymysql.Connect( host="localhost", port=3306, user='root', passwd='123456', db='zyDB', charset='utf8', ) cursor = connect.cursor() # 关闭数据库链接操作 def clos_cursor(): return cursor.close(); # 读取数据库数据 def query_all(): select_sql = "select*from fj_date where fj_id not in" \ "( select a.fj_id from ( select * from fj_date where mj_id>0 ) a " \ "join ( SELECT * from fj_date where jb_id>0 ) b" \ " on a.fjzz = b.fjzz and a.fj_add=b.fj_add) and mj_id>0" cursor.execute(select_sql); return cursor.fetchall(); # 关闭数据库链接操作 def clos_cursor(): cursor.close(); connect.close() def read_mysql_to_xlsx(): #要创建的xlsx名称 dest_filename = 'jb_data.xlsx' wb = Workbook() ws1 = wb.active ws1.title = "fj_date" # 列名 ws1.cell(row=1,column=1,value="fj_id(数据库编号)") ws1.cell(row=1,column=2,value="jb_id(疾病编号)") ws1.cell(row=1,column=3,value="mj_id(名医编号)") ws1.cell(row=1,column=4,value="fj_name(方剂名称)") ws1.cell(row=1,column=5,value="fjcc(出处)") ws1.cell(row=1,column=6,value="fjdm(代码)") ws1.cell(row=1,column=7,value="fjzc(加减)") ws1.cell(row=1,column=8,value="fjgx(功效)") ws1.cell(row=1,column=9,value="fj_add(组成)") ws1.cell(row=1,column=10,value="fjjj(禁忌)") ws1.cell(row=1,column=11,value="fjzy(方剂治验)") ws1.cell(row=1,column=12,value="fjzz(主治)") ws1.cell(row=1,column=13,value="fjyf(用法)") ws1.cell(row=1,column=14,value="ylzy(药理作用)") ws1.cell(row=1,column=15,value="gjls(各家论述)") ws1.cell(row=1,column=16,value="fj(方解)") ws1.cell(row=1,column=17,value="ks(科室)") ws1.cell(row=1,column=18,value="ckzl(参考资料)") ws1.cell(row=1,column=19,value="lcyy(临床应用)") ws1.cell(row=1,column=20,value="tjbq(推荐标签)") ws1.cell(row=1,column=21,value="zysx(注意事项)") ws1.cell(row=1,column=22,value="fjzb(制备方法)") ws1.cell(row=1,column=23,value="fg(方歌)") ws1.cell(row=1,column=24,value="path(路径)") # 循环数据写入内容 jb_date_list = query_all() for i in range(2,len(jb_date_list)+1): ws1.cell(row=i, column=1, value=jb_date_list[i-1][0]) ws1.cell(row=i, column=2, value=jb_date_list[i-1][1]) ws1.cell(row=i, column=3, value=jb_date_list[i-1][2]) ws1.cell(row=i, column=4, value=jb_date_list[i-1][3]) ws1.cell(row=i, column=5, value=jb_date_list[i-1][4]) ws1.cell(row=i, column=6, value=jb_date_list[i-1][5]) ws1.cell(row=i, column=7, value=jb_date_list[i-1][6]) ws1.cell(row=i, column=8, value=jb_date_list[i-1][7]) ws1.cell(row=i, column=9, value=jb_date_list[i-1][8]) ws1.cell(row=i, column=10, value=jb_date_list[i-1][9]) ws1.cell(row=i, column=11, value=jb_date_list[i-1][10]) ws1.cell(row=i, column=12, value=jb_date_list[i-1][11]) ws1.cell(row=i, column=13, value=jb_date_list[i-1][12]) ws1.cell(row=i, column=14, value=jb_date_list[i-1][13]) ws1.cell(row=i, column=15, value=jb_date_list[i-1][14]) ws1.cell(row=i, column=16, value=jb_date_list[i-1][15]) ws1.cell(row=i, column=17, value=jb_date_list[i-1][16]) ws1.cell(row=i, column=18, value=jb_date_list[i-1][17]) ws1.cell(row=i, column=19, value=jb_date_list[i-1][18]) ws1.cell(row=i, column=20, value=jb_date_list[i-1][19]) ws1.cell(row=i, column=21, value=jb_date_list[i-1][20]) ws1.cell(row=i, column=22, value=jb_date_list[i-1][21]) ws1.cell(row=i, column=23, value=jb_date_list[i-1][22]) ws1.cell(row=i, column=24, value=jb_date_list[i-1][23]) # 创建xlsx wb.save(filename=dest_filename) if __name__ == '__main__': read_mysql_to_xlsx()
补充知识:Python 关闭文件释放内存的疑惑
我用with语句打开了一个4g的文件读取内容,然后程序末尾设置一个死循环,按理说with语句不是应该自动关闭文件释放资源吗?
但是系统内存一直没有释放。应该是被文件读取到的变量content一直占用吗?把content删除就会释放内存。或者去掉死循环,程序退出资源就自动释放了
既然这样的话关闭文件貌似没啥作用呢?具体释放了什么资源?
Python一直占用着将近5G的内存:
官方文档:
If you're not using the with keyword, then you should call f.close() to close the file and immediately free up any system resources used by it. If you don't explicitly close a file, Python's garbage collector will eventually destroy the object and close the open file for you, but the file may stay open for a while. Another risk is that different Python implementations will do this clean-up at different times.
After a file object is closed, either by a with statement or by calling f.close(), attempts to use the file object will automatically fail.
代码如下:
import sys with open(r'H:\BaiduNetdiskDownload\4K.mp4','rb') as f: print(f.closed) content=f.read() print(f.closed) print(sys.getrefcount(f)) while True: pass
以上这篇python3 使用openpyxl将mysql数据写入xlsx的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持猪先飞。
相关文章
- 这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
- 新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
- 这篇文章主要介绍了Python3 实现将bytes图片转jpg格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-08
- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
Python3中小括号()、中括号[]、花括号{}的区别详解
这篇文章主要介绍了Python3中小括号()、中括号[]、花括号{}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-15深入研究mysql中的varchar和limit(容易被忽略的知识)
为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
- 我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
- 这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下...2020-10-29
- 这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15
- 宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Atheros AR8131 PCI-E Gigabit Ethernet Controller上网没问题。 宿主机使用无线的时候,客户机在Bridged Adapter模式下,使用可选项里唯一一个WIFI选项,Microsoft Virtual Wifi Miniport Adapter也无法上网,故弃之。...2013-09-19
- 首先要声明一点,大部分情况下,修改MySQL密码是需要有mysql里的root权限的...2013-09-11
- 这篇文章主要介绍了Python3 常用数据标准化方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-24
- MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:/Program Files/MySQL/MySQL Server 4.1/bin (或者直接将windows的环境变量path中添加该目录) ...2013-09-26
- 一、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密...2015-11-08
- Navicat for MySQL注册码用来激活 Navicat for MySQL 软件,只要拥有 Navicat 注册码就能激活相应的 Navicat 产品。这篇文章主要介绍了Navicat for MySQL 11注册码\激活码汇总,需要的朋友可以参考下...2020-11-23
- 这篇文章主要介绍了mysql IS NULL使用索引案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-08-14
- 一、准备编译环境,安装所需依赖包yum groupinstall 'Development' -y yum install openssl openssl-devel zlib zlib-devel -y yum install readline-devel pcre-devel ncurses-devel bison-devel cmake -y二、编译安...2015-10-21
- 这篇文章主要介绍了基于PostgreSQL和mysql数据类型对比兼容,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-25