zoukankan      html  css  js  c++  java
  • Python导出数据库自动生成excl

    # __Desc__ = 从数据库中导出数据到excel数据表中
    import xlsxwriter
    import pymysql
    class MYSQL:
        def __init__(self):
            pass
    
        def connectDB(self):
            try:
                self._connect = pymysql.Connect(
                    host='172.18.21.241',
                    port=3306,
                    user='songyao',
                    passwd='#',
                    db='songkylin',
                    charset='utf8'
                )
    
                return 0
            except:
                return -1
    
        def export(self, table_name, sql, output_path):
            self._cursor = self._connect.cursor()
            count = self._cursor.execute(sql)
            # print(self._cursor.lastrowid)
            # 重置游标的位置
            self._cursor.scroll(0, mode='absolute')
            # 搜取所有结果
            results = self._cursor.fetchall()
    
            # 获取MYSQL里面的数据字段名称
            fields = self._cursor.description
            #workbook = xlwt.Workbook()
            workbook = xlsxwriter.Workbook(output_path,{'constant_memory': True})
    
            sheet = workbook.add_worksheet(table_name)
    
            # 写上字段信息
            # ls = []
            # ls.append(fields)
            for field in range(0,len(fields)):
                sheet.write(0, field, fields[field][0])
    #            _ = sheet.cell(1, 1, fields[field][0])
    
            # 获取并写入数据段信息
            row = 1
            col = 0
            for row in range(0,len(results)+1):
                for col in range(0, len(fields)):
                    sheet.write(row, col, u'%s' % results[row-1][col])
    
            workbook.close()
    
            self._cursor.close()
            self._connect.close()
    
    
    def read_sql():
        import re
    
        with open('test.txt','rt',encoding='utf8') as f:
            result = f.read()
    
        lst = re.split(r'[.*?]',result)
    
        for line in lst:
            if not line:continue
            filename = re.findall(r'filename=(.*?)
    ',line)[0]
            sheet = re.findall(r'sheet01=(.*?)
    ',line)[0]
            sql = re.findall(r"sql='''(.*?)'''",line,re.S)[0]
            print(filename,sheet,sql)
            # break
    
    
    
    
    
    
    if __name__ == '__main__':
    
        while True:
            mysql = MYSQL()
            flag = mysql.connectDB()
            read_sql()
            table_name = 'sheet'
            sql = "sql"
            output_path="filename"
            if flag == -1:
                print('数据库连接失败')
            else:
                print('数据库连接成功')
            try:
                mysql.export(table_name,sql,output_path)
            except Exception as msg:
                print(msg)
                break
            print('sql执行完成')
    

      

    前端开原件项目

    https://panjiachen.github.io/vue-element-admin/#/dashboard

    解析域名 nslookup www.baidu.com 223.5.5.5

    每天逼着自己写点东西,终有一天会为自己的变化感动的。这是一个潜移默化的过程,每天坚持编编故事,自己不知不觉就会拥有故事人物的特质的。 Explicit is better than implicit.(清楚优于含糊)
  • 相关阅读:
    Android Butterknife(黄油刀) 使用方法总结【转】
    Andriod- 一些包
    Andriod- 学习网站
    Android热点 8.0 ,7.1 ,6.0一7.0 以及6.0以下热点创建到连接完全适配
    Android- 动态修改ToolBar的Menu菜单
    C#- Socket实现服务器与多个客户端通信
    html使用pdf.js途中遇到的坑和坑
    小程序内嵌H5页面和小程序内部页面互相传参和内嵌H5页面的调试
    记录一次Centos7宕机事件
    Spring Boot 2.x实战
  • 原文地址:https://www.cnblogs.com/kylin5201314/p/14583824.html
Copyright © 2011-2022 走看看