【问题标题】:Pandas Auto Generate CSVPandas 自动生成 CSV
【发布时间】:2021-04-08 11:34:43
【问题描述】:

我必须每 5 分钟从 SQL Server 表中读取数据,重新采样数据并每天自动生成一个 .csv 文件,文件名是日期。我的代码如下:

import pyodbc
import pandas as pd
from datetime import datetime, timedelta
import datetime
import time

conn = pyodbc.connect( driver='{SQL Server Native Client 11.0}',server='xyz', database='RW', Trusted_Connection='yes')
cursor = conn.cursor()

t_date=datetime.datetime.now().date()
today_date=pd.to_datetime(t_date)
tm_date = today_date + timedelta(days=1)
filename = str(t_date)+'.csv'
path = 'G:\\dump\\'

while 1:
    sql = '''SELECT * FROM weather_data WHERE TimeCol BETWEEN ? AND ? ORDER BY LOCALCOL ASC;'''
    df = pd.read_sql_query(sql, conn, index_col = 'Timecol', params =[today_date, tm_date])
    df1 = df.resample('15Min').mean()
    df1.index.names = ['Date Time']
    df1.to_csv(path+filename)
    time.sleep(300)

当我运行代码一天时,会创建 .csv 文件,但第二天(00:00 后)不会生成新文件,除非我重新运行代码。

每天早上 00:00 的期望行为:

01-01-2020.csv
01-02-2020.csv
01-03-2020.csv
.
.

请支持我应该进行哪些更改,以便 .csv 导出每天都能自动化。另外,请建议是否需要进行任何微调以使其健壮。提前致谢。

【问题讨论】:

    标签: python pandas csv datetime pyodbc


    【解决方案1】:

    将时间日期函数带入循环,字符串定义出循环

    sql = '''SELECT * FROM weather_data WHERE TimeCol BETWEEN ? AND ? ORDER BY LOCALCOL ASC;'''
    
    while 1:
        t_date=datetime.datetime.now().date()
        today_date=pd.to_datetime(t_date)
        tm_date = today_date + timedelta(days=1)
        filename = str(t_date)+'.csv'
        df = pd.read_sql_query(sql, conn, index_col = 'Timecol', params =[today_date, tm_date])
        df1 = df.resample('15Min').mean()
        df1.index.names = ['Date Time']
        df1.to_csv(path+filename)
        time.sleep(300)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      相关资源
      最近更新 更多