Создание фрейма данных Dask из курсора базы данных - PullRequest
0 голосов
/ 31 августа 2018

У меня есть курсор для извлечения данных из базы данных. После выполнения запроса я обычно сохранял бы его в кадре данных pandas, используя fetchall().

Когда данные становятся слишком большими для памяти, этот метод больше не работает.

Я думаю об использовании dask для хранения результатов для дальнейшего анализа. Будучи совершенно новым для меня, я подумал, как лучше всего это сделать.

например.

query = """SELECT * FROM table"""
cursor.execute(query)

# Would usually do something like
df = pd.DataFrame([i for i in cursor.fetchall()])

1 Ответ

0 голосов
/ 31 августа 2018

Объект cursor не идеален для такого рода вещей, потому что он имеет один сеанс подключения и состояние, и поэтому вы не можете осмысленно делиться им между потоками или процессами, только итерируйте его (как вы делаете в понимание).

У Dask есть read_sql_table для этого вида работ, который, как следует из названия, предназначен для загрузки из таблиц, а не обобщенных запросов.

Вас также может заинтересовать потребление-sql , которое включает в себя плагины как для вышеупомянутой функции, так и для общего запроса, в котором вы заранее знаете, как инструкции WHERE создавать разделы. Это в контексте проекта Intake , который позволяет кодировать спецификацию загрузки данных в каталоги источников данных.

...