基於python pandas sqlalchemy 的在兩個時間之間, 每隔60分鐘執行一次定時任務導出mysql查詢到Excel實現代碼

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import mysql.connector
import pandas as pd
import numpy as np
import time
import datetime
from sqlalchemy import create_engine
from apscheduler.schedulers.blocking import BlockingScheduler

def deviceInfoToExcel():
  #定義變量
  sql = " "
  excelFile = 'F:\\tools\\python\\Excel_'+time.strftime('%Y%m%d',time.localtime())+'.xlsx'


  print("開始連接數據庫")

  proConn = mysql.connector.connect(
      host="",       # 數據庫主機地址
      user="",    # 數據庫用戶名
      passwd="",   # 數據庫密碼
      database=""
    )
  print("連接數據庫成功")
  
  cursor = proConn.cursor()
  cursor.execute(sql)
  data = cursor.fetchall()     # fetchall() 獲取所有記錄
  columnDes = cursor.description #獲取連接對象的描述信息
  columnNames = [columnDes[i][0] for i in range(len(columnDes))]
  df = pd.DataFrame([list(i) for i in data],columns=columnNames)
  
  writer = pd.ExcelWriter(excelFile)
  df.to_excel(writer,float_format='%.5f')
  writer.save()
  print("導出Excel完成")
  cursor.close()
  proConn.close()
  print('關閉數據庫連接')

def taskToExcel():
    print(time.strftime('>>>>>>> now %Y-%m-%d %X',time.localtime()))
    deviceInfoToExcel()
    print(time.strftime('>>>>>>> now %Y-%m-%d %X',time.localtime()))
    print()



if __name__ == '__main__':
    # BlockingScheduler 在進程中運行單個任務 調度器是唯一運行的東西
    scheduler = BlockingScheduler()
    # 在 之間, 每隔60分鐘執行一次 taskToExcel 方法
    scheduler .add_job(taskToExcel, 'interval', minutes=60, coalesce=True, misfire_grace_time=3600,start_date='2020-06-16 19:59:00' , end_date='2020-12-31 23:59:59')
    scheduler.start()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章