Цикл запроса SQL в python и сохранение в файл CSV по дате - PullRequest
0 голосов
/ 05 февраля 2020

Описание задачи

Привет

У меня есть база данных, и я хочу извлечь из нее все, используя SQL в python. Я заинтересован в сохранении указанных c date периодов в свой CSV-файл. Например, чтобы получить весь 2000 год, date будет между 20000101 и 20001231 (гггг-мм-дд). Это прекрасно работает с приведенным ниже кодом:

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

Тем не менее, я получу sh до l oop в разные годы, в частности, с 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 =',')

Но это очень неэффективно. Любые идеи для этого al oop с изменением дат в части кода запроса и изменением года при выводе в соответствующий CSV-файл!

1 Ответ

1 голос
/ 05 февраля 2020

Создайте последовательность значений с шагом 10k, а затем выполните итерацию с использованием параметризации.

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]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...