首页 > 解决方案 > 在python中循环SQL查询并按日期保存到csv文件

问题描述

任务描述

你好

我有一个数据库,想在 python 中使用 SQL 从中检索所有内容。我有兴趣将特定date时期保存到他们自己的 csv 文件中。例如,要获取 2000 年的所有年份,date则将介于 20000101 和 20001231 (yyyy-mm-dd) 之间。这与以下代码完美配合:

df = pd.read_sql_query('SELECT * FROM data WHERE date BETWEEN 20000101 AND 20001231', database)
df.to_csv('2000_data.csv', sep =',')

但是,我希望循环遍历不同的年份,特别是 1960 年到 2018 年,因此总共将输出 58 个不同的 csv 文件。

我可以手动更改日期,如下所示:

df = pd.read_sql_query('SELECT * FROM data WHERE date BETWEEN 20010101 AND 20011231', database)
df.to_csv('2001_data.csv', sep =',')

但这是非常低效的。在代码的查询部分更改日期以及在输出到相应的 csv 文件时更改年份的任何想法!

标签: pythonpandassqliteloopscsv

解决方案


创建一个值序列,步进 10k,然后遍历 using 参数化。

sql = 'SELECT * FROM data WHERE date BETWEEN ? AND ?'

for num in range(19600101, 20180102, 10000):
  df = pd.read_sql(sql, database, params=[num, num+1130]) 
  df.to_csv('{}_data.csv'.format(str(num)[:4]))

推荐阅读