场景: 由于业务人员经常会找DBA导出一些数据,写了一个自动导出脚本。

import pymysql
from openpyxl import Workbook
from openpyxl.writer.excel import ExcelWriter
from openpyxl.cell.cell import get_column_letter
import datetime,time,logging
import os # 开始日期
start_date = datetime.date(datetime.date.today().year,datetime.date.today().month,1)
# 结束日期
stop_date = datetime.date(datetime.date.today().year,datetime.date.today().month + 1,1)
# 当天日期
Today = time.strftime('%Y-%m-%d')
# 表格输出路径
DirName = '/xxxx/xxxx/xxxxxx/'
# 表格名字
FileName = '%sxxxxxxx-%s.xlsx' % (DirName, Today) # 需要执行的SQL
SQL=() # SQL转换成小写
SQL=SQL.lower() # 定义日志
logging.basicConfig(filename='%saccess.log' %DirName,
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=10) class MYSQL:
def __init__(self):
pass def __del__(self):
self._cursor.close()
self._connect.close() def connectDB(self):
"""
连接数据库
:return:
"""
try:
self._connect = pymysql.Connect(
host='',
port=,
user='',
passwd='',
db='',
charset='utf8'
) return 0
except:
return -1 def export(self, table_name, output_path):
self._cursor = self._connect.cursor()
count = self._cursor.execute(SQL)
logging.info('返回%s行数据' %count)
# 搜取所有结果
results = self._cursor.fetchall()
# 获取字段名
fields_complex = self._cursor.description
# 字段名加入li 列表中
fields = []
for i in range(len(fields_complex)):
fields.append(fields_complex[i][0])
# 创建表格
wb = Workbook()
ws = wb.active
ws = wb.worksheets[0]
# 字段名添加到表格
ws.append(fields)
# 数据添加到表格
for ret in results:
ws.append(ret)
#保存
wb.save(output_path) if __name__ == '__main__':
mysql = MYSQL()
flag = mysql.connectDB()
if flag == -1:
logging.info('数据库连接失败')
else:
logging.info('数据库连接成功')
logging.info('导出数据的开始时间: %s' %start_date)
logging.info('导出数据的结束时间: %s' %stop_date)
mysql.export('t1', '%s' % FileName)
if FileName:
logging.info('数据导出成功!\n')
else:
logging.info('数据导出失败!\n')
os.system('chown expftp:expftp %s' %FileName)

数据库导出数据到excel格式的更多相关文章

  1. 从数据库导出数据到excel之POI操作

    项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...

  2. 从数据库导出数据到excel之List<List<Object>>导出

    说明:有时候数据处理为List<List<Object>>更方便 姊妹篇:从数据库导出数据到excel之List<Map<>>导出 兄弟篇:从数据库导出 ...

  3. 使用python脚本从数据库导出数据到excel

    python从数据库导出数据到excel 最近需要从数据库里导出一些数据到excel,刚开始我是使用下面的命令 select * from xxx where xxx into outfile 'xx ...

  4. node如何导出数据成为excel格式

    node的应用方式,导出数据 首先,你要把数据库连接上,把你要导的数据表写出来 安装模块 $ npm install sequelize $ npm install mysql $ npm insta ...

  5. VBA中数据库导出数据到Excel注意事项

    Sub ReadDBData() On Error GoTo ErrorHand Dim dbHelper As New dbHelper Dim sqlSQL As String Dim rs As ...

  6. 从数据库导出数据到excel之List<map>导出

    说明:很多时候取出来的数据是封装为List<Map<String,Object>>,可以直接导出excel表格 项目说明就在 “上一篇” 直接上代码(数据层和业务层不用说了,查 ...

  7. php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法

    而关于php的也有,但是大多都是用phpExcel导出的方法或者spreadsheet等类或者控件之类的导出方法,而我所在维护的系统却用很简单的方法,如下,网上很少有讲如何设置要导出数据的EXcel格 ...

  8. 微软BI 之SSIS 系列 - 导出数据到 Excel 2013 的实现

    开篇介绍 碰到有几个朋友问到这个问题,比较共性,就特意写了这篇小文章说明一下如何实现在 SSIS 中导出数据到 Office Excel 2013 中.通常情况下 2013 以前的版本大多没有问题,但 ...

  9. 导出数据到Excel方法总结

    一,问题的提出 近来在网上经常有人问怎样把数据导出到Excel中?针对这个问题网上也有很多资料.大都比较的琐碎.本人当前从事的项目中,刚好涉及到这些内容.就顺便做了一些归纳整理.共享给大家.避免大家再 ...

随机推荐

  1. cocos2dx基础篇(22) 基本动画CCAnimation/CCAnimate

    [小知识] CCSpriteFrame     :精灵帧.    它是相对动画而产生的,其实就是一张纹理图片. CCAnimationFrame  :动画帧.    由精灵帧与间隔帧数组成,是动画CC ...

  2. 2D轮播图

    目录结构 index.html <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

  3. vue,基于element的tree组件封装

    封装组件代码 // 组件:树 /* 参数说明-属性: 1.treeData:展示数据(array) 2.treeEmptyText:内容为空的时候展示的文本(String) 3.treeNodeKey ...

  4. linux环境下编译Android apk

    Android源码目录下的build/envsetup.sh文件,描述编译的命令 - m:       Makes from the top of the tree. - mm:      Build ...

  5. CF894E Ralph and Mushrooms

    题目 一眼题. 缩点然后dp. 注意一下计算一条边经过无限次可以获得多少价值这个东西要用到平方和公式. \(\sum\limits_{i=1}^ni^2=\frac{i(i+1)(2i+1)}6\) ...

  6. py之包和日志

    第一章 包 只要文件夹下含有__init__.py文件就是一个包 回想一下,之前我们没有学习模块的时候将一个整体的功能写入到文件中,为了能够充分的将某个功能进行重用 我们使用了模块,但是慢慢的模块就会 ...

  7. 查看ftp创建的用户

    先su然后查看cat /etc/passwd,500以后的是添加的使用者账户.

  8. 087、日志管理之 Docker logs (2019-05-09)

    参考https://www.cnblogs.com/CloudMan6/p/7749304.html   高效的监控和日志管理对保持生产系统只需稳定的运行以及排查问题至关重要.   在微服务架构中,由 ...

  9. HTTP常用状态码详解

    HTTP状态码: HTTP定义遵循一条规则:所有状态码的第一个数字代表了响应的状态.1表示消息:2表示成功:3表示重定向:4表示请求错误:5.6表示服务器错误.如下图: 1xx: 这一类型的状态码,代 ...

  10. java复习(1)面向对象

    一.面向对象的概念 ----------------------------------------------------- 1.理解面向对象:(1)面向对象是相对于面向过程的语言 (2)面向对象和 ...