Снежинка достать много в питоне

Я пытаюсь создать фрейм данных 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 поверх результатов.

Другие вопросы по тегам