python 提取mysql数据库数据到excel(xlwings-pymysql)

python 提取mysql数据库数据到excel

import pymysql
import xlwings as xw


class Mysql(object):
    def __init__(self, database, user, passwrod, host="127.0.0.1", port=3306, charset="utf8"):
        self.conn = pymysql.connect(host=host, port=port, database=database, user=user, password=passwrod,
                                    charset=charset,autocommit = True)
        self.cs1 = self.conn.cursor()

    def get_table(self):
        self.cs1.execute("show tables")
        tables_name = self.cs1.fetchall()
        return [i[0] for i in tables_name]

    def get_data(self, table_name):
        self.cs1.execute("select * from {}".format(table_name))
        data = self.cs1.fetchall()
        # 获取表格的字段
        table_field = [i[0] for i in self.cs1.description]
        # 拼接表格字段和数据
        data = list(data)
        data.insert(0, tuple(table_field))
        return data

    def __del__(self):
        print("删除mysql链接")


class Excel(object):
    def __init__(self, excel_name):
        self.excel_name = excel_name
        self.app = xw.App(visible=True, add_book=False)
        self.wb = self.app.books.add()

    def write_excel(self, data, sheet_name):
        sht = self.wb.sheets.add(name=sheet_name)
        sht.range("A1").expand("table").value = data

    def save_excel(self):
        self.wb.save(self.excel_name)
        self.wb.close()
        self.app.quit()


if __name__ == '__main__':
    mysql = Mysql(database="t_03", user="root", passwrod="123456")
    table_names = mysql.get_table()
    m_excel = Excel(excel_name="t_03")
    for table_name in table_names:
        table_data = mysql.get_data(table_name=table_name)
        m_excel.write_excel(data=table_data, sheet_name=table_name)
    m_excel.save_excel()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值