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'
下一步该怎么做?在
docstring指定的
read_sql_table
的第二个参数不应是连接对象,而是用于创建该对象的URI(在您的例子中是“oracle…”字符串)。这是因为sqlalchemy引擎不是可序列化的,也不是线程安全的,所以运行查询的任务需要创建自己的本地版本的引擎。在相关问题 更多 >
编程相关推荐