dtype 映射参数中的键只能使用列名

Pet*_*ete 7 python pandas dask

我已经使用 dask read_sql_table 从 oracle 数据库成功引入了一张表。但是,当我尝试引入另一个表时,我收到此错误KeyError: 'Only a column name can be used for the key in a dtype mappings argument.'

我检查了我的连接字符串和架构,所有这些都很好。我知道表名存在,我试图用作索引的列是 oracle 数据库中表的主键。

有人可以解释为什么当列名明确存在时会发生此错误吗?

我知道我可以使用 Pandas 块,但在这种情况下宁愿使用 dask。

下面是我如何连接到 oracle 数据库和错误消息的最后一点

host='*******'
port='*****'
sid='****'
user='******'
password='*****'

con_string = 'oracle://' + user + ':' + password + '@' + host + ':' + port + '/' + sid 
engine = create_engine(con_string)

df =ddf.read_sql_table('table_name', uri=con_string, index_col='id', npartitions=None, schema='*****')
Run Code Online (Sandbox Code Playgroud)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in astype(self, dtype, copy, errors, **kwargs) 5855
如果 col_name 不在 self: 5856 raise KeyError( - > 5857“只有列名可用于 dtype 映射参数中的“5858”键。”5859)

KeyError: 'dtype mappings 参数中的键只能使用列名。'

今天对于另一个表,我在 ddf.read_sql_table 中添加了所有列名,并且查询有效。但是对于另一个表,我试图通过列出所有列名来做同样的事情,但我得到了上面的 KeyError。

谢谢大家。

小智 9

当列名不匹配或 dtype 映射中存在表中不存在的列时,通常会发生此错误。