从数据库游标创建Dask数据框

时间:2018-08-31 00:13:30

标签: dataframe dask

我有一个游标,用于从数据库中检索数据。 执行查询后,我通常会使用fetchall()将其存储在pandas数据框中。

一旦数据变得太大而无法存储,此方法将不再起作用。

我正在考虑使用dask存储结果以进行进一步分析。刚接触时,我想知道什么是最好的解决方法。

例如

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

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

1 个答案:

答案 0 :(得分:2)

cursor对象不适用于这种情况,因为它具有单个连接会话和状态,因此您无法在线程或进程之间有意义地共享它,而只能对其进行迭代(当您理解)。

Dask确实有read_sql_table用于这种工作,顾名思义,它是用于从表而不是广义查询中加载。

您可能还对intake-sql感兴趣,其中包括上述功能的插件和常规查询的插件,您事先知道如何使用WHERE语句进行分区。这是在Intake项目的上下文中进行的,该项目使您可以将数据加载规范编码到数据源目录中。