数据库导出数据到excel格式

Posted yujiaershao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库导出数据到excel格式相关的知识,希望对你有一定的参考价值。

 

场景: 由于业务人员经常会找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(数据导出成功!
)
    else:
        logging.info(数据导出失败!
)
    os.system(chown expftp:expftp %s %FileName)

 

以上是关于数据库导出数据到excel格式的主要内容,如果未能解决你的问题,请参考以下文章

使用 jasper 将日期导出到 Excel

java导出excel

软件导出数据到excel,数据都变成了科学计数,请问能否将EXCEL的默认数字格式改为数值?

为啥将数据导出到 Excel 时日期格式会发生变化?

DataGridView导出数据到Excel及单元格格式的改动

php怎么导出大量数据的Excel,phpexcel