Dask read_sql_table throws error AttributeError:“Connection”对象没有属性“\u instantiate\u plugins”

2024-04-19 17:59:32 发布

您现在位置:Python中文网/ 问答频道 /正文

from sqlalchemy import create_engine
sql_engine = create_engine('oracle+cx_oracle://user:password@environment')
connection = sql_engine.connect()
# works with PANDAS?
import pandas as pd
pd.read_sql_table('table', connection)

以上给出了预期输出。现在去达斯克。。。在

^{pr2}$

…这给了。。。在

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in ----> 1 dd.read_sql_table('qsi_run_info_int', connection)#, 'hedis_version_key')

TypeError: read_sql_table() missing 1 required positional argument: 'index_col'

…并通过将列添加到索引。。。在

^{3}$

…给予。。。在

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ----> 1 dd.read_sql_table('qsi_run_info_int', connection, 'hedis_version_key')

~.conda\envs\test_dask\lib\site-packages\dask\dataframe\io\sql.py in read_sql_table(table, uri, index_col, divisions, npartitions, limits, columns, bytes_per_chunk, head_rows, schema, meta, engine_kwargs, **kwargs) 98 raise ValueError("Must specify index column to partition on") 99 engine_kwargs = {} if engine_kwargs is None else engine_kwargs --> 100 engine = sa.create_engine(uri, **engine_kwargs) 101 m = sa.MetaData() 102 if isinstance(table, string_types):

~.conda\envs\test_dask\lib\site-packages\sqlalchemy\engine__init__.py in create_engine(*args, **kwargs) 433 strategy = kwargs.pop("strategy", default_strategy) 434 strategy = strategies.strategies[strategy] --> 435 return strategy.create(*args, **kwargs) 436 437

~.conda\envs\test_dask\lib\site-packages\sqlalchemy\engine\strategies.py in create(self, name_or_url, **kwargs) 54 u = url.make_url(name_or_url) 55 ---> 56 plugins = u._instantiate_plugins(kwargs) 57 58 u.query.pop("plugin", None)

AttributeError: 'Connection' object has no attribute '_instantiate_plugins'

下一步该怎么做?在


Tags: inurlreadsqlindexsqlalchemycreatetable
1条回答
网友
1楼 · 发布于 2024-04-19 17:59:32

docstring指定的read_sql_table的第二个参数不应是连接对象,而是用于创建该对象的URI(在您的例子中是“oracle…”字符串)。这是因为sqlalchemy引擎不是可序列化的,也不是线程安全的,所以运行查询的任务需要创建自己的本地版本的引擎。在

相关问题 更多 >