python将mysql数据定时导出到CSV
2022-03-19 本文已影响0人
刘小白DOER
今天遇到一个小需求,就是把数据库中的一些信息定期保存下来作为存档,于是想起以前做的三个方法:将mysql数据转换为csv文件的三种方法。pandas方法可以写入数据库字段信息,但是加载pandas速度较慢,对于笔者的需求来说不需要大动干戈;csv方法还没有添加字段信息,于是乎就修改一些以前的代码来适用,顺便做一些优化。
代码托管在:laufei90/python: Some Python scripts (github.com)
只需修改一个地方即可,writer.writerow写入header列表,数据库字段的列表需要自己定义在header列表中。
那么如果字段比较多,查询全部字段的话就可以使用mysql自带的表里查询,这个表保存了每张表的字段信息。比如 "select COLUMN_NAME from information_schema.COLUMNS where table_name = 'websites'" 。如果查询时只需要其中几个字段,那么使用pymysql自带的方法获取就比较方便,利用description属性获取描述信息遍历即可获取表头。
cursor.description可以此只读属性返回描述结果集中的列的元组列表,第一个值column_name就是字段名,使用list列表将每一列表的第一个值取出组成新的列表。
接下来就是定期任务来完成自动化。本来笔者想使用Scheduler来完成定时任务,但是在维护时需要在程序第一次运行时就做一次备份操作,于是考虑直接自己来循环判断实现,下面就是使用while循环和time时间差来实现的定时完成数据备份。