如何使用Dask从SQL <连接字符串>读取数据?

时间:2019-07-04 11:15:45

标签: python pandas dask

文档中没有足够的示例说明如何将数据从sqlAlchemy读取到dask数据框。

我看到的一些例子是:

   df = dd.read_sql_table(table='my_table_name', uri=my_sqlalchemy_con_url, index_col='id')

但是我的查询不是一次获取整个表,而只是获取(从.... table A到.....中选择*)作为参数传递的查询。此外,如何传递没有提到连接参数。

如何从sqlAlchemy连接引擎传递连接参数,以及如何传递自定义查询,而不是获取整个表。

我理解这是基本的,但是在docs / web中找不到对此的引用

编辑:

     d100 = 'mysql+mysqlconnector://{0}:{1}@{2}:{3}/{4}'.format("xx", "xx", "xxxxx.com", "3306", "xxxx") 
     df = dd.read_sql_table(table='select * from ps_g9 limit 10;', uri=d100, index_col='uuid') 

我得到表不存在错误

2 个答案:

答案 0 :(得分:1)

以下是文档:https://docs.dask.org/en/stable/dataframe-api.html#dask.dataframe.read_sql_table

它列出了以下内容:

  • “ table”参数确实可以是表名或任何由sqlalchemy实例(即不是文本)构造的SQL表达式
  • 创建数据库查询引擎时,字典engine_kwargs(如果给定的话)将传递给sqlalchemy

答案 1 :(得分:1)

数字索引的默认分区大小是256 MB,除非您指定npartitions。 对于字符串索引,您可以使用divisions参数,例如

... division = sorted(['red', 'green', 'blue', 'yellow']) ...

如果您的索引带有颜色名称。

另请参阅https://github.com/dask/dask/issues/2604

可以使用engine_kwargs关键字传递sqlalchemy的更多参数。另请参见read_sql_table docs

Here是Mannings 使用Python和Dask进行大规模数据科学的相关章节的预览。