Снежинка достать много в питоне
Я пытаюсь создать фрейм данных pandas, используя пакеты Snowflake в python.
Я запускаю какой-то запрос
sf_cur = get_sf_connector()
sf_cur.execute("USE WAREHOUSE Warehouse;")
sf_cur.execute("""select Query"""
)
print('done')
Выход составляет примерно 21 тыс. Строк. Затем с помощью
df = pd.DataFrame(sf_cur.fetchall())
занимает вечность даже на предельной выборке всего в 100 рядов. Есть ли способ оптимизировать это, в идеале больший запрос будет выполняться в цикле, так что обработка даже больших наборов данных будет идеальной.
1 ответ
Как fetchall()
копирует весь результат в память, вы должны попытаться перебрать объект курсора напрямую и отобразить его во фрейм данных внутри блока for
cursor.execute(query)
for row in cursor:
#build the data frame
Другой пример, просто чтобы показать:
query = "Select ID from Users"
cursor.execute(query)
for row in cursor:
list_ids.append(row["ID"])
Использовать df = cur.fetch_pandas_all()
чтобы построить фреймворк pandas поверх результатов.