Dask read_sql_table错误:'instancemethod'对象没有属性'__getitem__'

时间:2017-11-25 10:56:36

标签: python-2.7 dask dask-distributed

我在这个参数中遇到了这个错误:

import pandas as pd
import numpy as np
from sqlalchemy import create_engine
import dask.dataframe as dd
from sqlalchemy.sql import text
query = text( "Some SQL statement" )
df = dd.read_sql_table(table=query,uri='Some postgreSQL DB',index_col='id')

产生此错误:

/usr/local/lib/python2.7/dist-packages/dask/dataframe/io/sql.pyc in read_sql_table(table, uri, index_col, divisions, npartitions, limits, columns, bytes_per_chunk, **kwargs)
     73                          schema=schema)
     74 
---> 75     index = (table.columns[index_col] if isinstance(index_col, six.string_types)
     76              else index_col)
     77     if not isinstance(index_col, six.string_types + (elements.Label,)):

TypeError: 'instancemethod' object has no attribute '__getitem__'

有人知道这是什么问题吗?

1 个答案:

答案 0 :(得分:0)

table参数必须是现有表(因此是字符串或sa.Table实例)或完整的sqlalchemy语句(例如,sqlalchemy.sql.select()),您可以在其中定义要获取的完整列集。这样做的原因是,我们不会尝试在此处解析通用的查询,这可能是后端特定的。您可以自己利用sqlalchemy将文本查询转换为此函数的结构化语句。