zoukankan      html  css  js  c++  java
  • python查询数据库保存为csv

    # coding: utf-8
     
    import pymssql
    import csv
    import datetime
    from file2zip import *
    # from send_email import *
    import plugs.FileHelper as fileHelper
    from  file2zip import FileToZip #类名
    from  send_email import SendMail  #类名
    
    
    class TestCSVInfo(fileHelper.BaseCheck, SendMail,FileToZip):
        report = ''
        def __init__(self, month):
            SendMail.__init__(self, month)
    
        def get_sel_excel(self):
            print(" 开始链接数据库!")
            # 建立连接
            conn = pymssql.connect(
                host='localhost',
                port=1433,
                user='test',
                password='test',
                database='Test',
                charset='utf8'
            ) 
            dateFrom = '2020-04-01 0:00:00'
            dateTo = '2020-04-30 23:59:59'
            today = datetime.datetime.now().strftime('%Y-%m-%d')
            try: 
                print(os.path.exists(month))
                if os.path.exists(month) == False:
                    os.makedirs(month)
    
                # 建立游标
                cursor = conn.cursor()
                # <editor-fold desc="查询语句">
     
                titile = today + '_' + '商品'
                header = ['订单号', '金额', '日期']
                print("开始查询表!")
                # 执行sql语句
                _sql = self.getsql("test.sql")
                Sql = _sql.replace('v_from', str(dateFrom)).replace('v_to', str(dateTo))
                print(titile + '——数据库查询中。。。')
                cursor.execute(Sql)
                # 获取查询到结果
                res = cursor.fetchall()
                self.w_excel(res, header, titile)
       
                # </editor-fold>
    
                cursor.close()
                conn.close()
    
                #压缩为zip
                self.addZip(month)
    
                # 发送邮件
                self.SendMethod(month)
    
            except Exception as e:
                print("报错{}".format(e))
                cursor.close()
                conn.close()
    
        # 操作csv
        def w_excel(self, res, header, titile):
            with open(f'{month}/' + titile + '.csv', 'w', newline='', encoding='utf-8-sig') as csvfile:
                writer = csv.writer(csvfile)
                # 写表头
                writer.writerow(header)
                # 写入数据
                for row in range(0, len(res)):
                    writer.writerow(list(res[row]))
    
            print(titile + f"导出成功!,共有条数:{len(res)}")
            print(titile + "结束-------------------------------------------------------------------------")
    
    if __name__ == "__main__":
        _today = datetime.date.today()
        _first = _today.replace(day=1)
        last_month = _first - datetime.timedelta(days=1)
        month = last_month.strftime('%Y-%m') #获取上个月月份
        # month = datetime.datetime.now().strftime('%Y-%m') #获取当前月份
        TestCSVInfo(month).get_sel_excel()
  • 相关阅读:
    minimsg升级扩展
    一起学习Avalonia(十三)
    @Import注解源码
    Python入门随记(3)
    NET WebApi 后端重定向指定链接
    Net Nlog 持久化到数据库
    NetCore Xunit单元测试依赖注入
    VS 调试时,提示无法启动iis服务器
    NET 反射,对可空类型动态赋值
    MSSQL 查询表结构
  • 原文地址:https://www.cnblogs.com/yexiaoyanzi/p/12859336.html
Copyright © 2011-2022 走看看