首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用dask读取数据

无法使用dask读取数据
EN

Stack Overflow用户
提问于 2022-08-21 13:41:08
回答 2查看 127关注 0票数 0

我希望使用dask.read_sql获取sql数据。

我的代码是

代码语言:javascript
复制
from dask.dataframe import read_sql_query, read_sql, read_sql_table

username='uid'
password='pid'
database='myDB'
host='sql_server'
port='1433'
driver='ODBC+Driver+17+for+SQL+Server'

conn_str = f"mssql+pyodbc://{username}:{password}@{host}:{port}/{database}?driver={driver}"

ddf = read_sql_query(sql="select * from data", con=conn_str, index_col='id')

但是,我发现了一个错误

代码语言:javascript
复制
File "C:\Program Files\Python38\lib\site-packages\dask\dataframe\io\sql.py", line 118, in read_sql_query
    q = sql.limit(head_rows)
AttributeError: 'str' object has no attribute 'limit'

如何解决这个问题?

非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2022-08-21 14:14:00

read_sql_query()的文档指出,sql参数必须是SQLAlchemy Selectable,不能是字符串。

SQLAlchemy文档建议如下所示:

代码语言:javascript
复制
from dask.dataframe import read_sql_query
from sqlalchemy import table, column

data = table("data",
        column("id"),
        ..., # all the other columns in your table
)

conn_str = ... # constructed as before
ddf = read_sql_query(sql=data.select(), con=conn_str, index_col='id')

SQLAlchemy的快速测试

您可能想要测试SQLAlchemy是否正常工作,因此如果问题是SQLAlchemy、dask或其他什么的,您可以将其分开。这个代码片段将帮助您查看您是否正确地使用了SQLAlchemy。

代码语言:javascript
复制
import sqlalchemy

data = table("data",
        column("id"),
        column("foo"),  # or whatever
)

conn_str = ...

engine = sqlalchemy.create_engine(conn_str)
# you don't have to use limit, but just in case your table is 
# not a demo table and actually has lots of rows
cursor = engine.execute(data.select().limit(1))
row = cursor.fetchone()
print(row)  # should print something like (1, 'abc')
票数 0
EN

Stack Overflow用户

发布于 2022-08-21 13:52:24

代码语言:javascript
复制
conn_str = f"mssql+pyodbc://{username}:{password}@{host}:{port}/{database}?driver={driver}"

应该是这样:

代码语言:javascript
复制
conn_str = "mssql+pyodbc://{username}:{password}@{host}:{port}/{database}?driver={driver}"
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73434983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档