[英]read_sql_table in Dask returns NoSuchTableError
我有一個使用 Pandas 的 read_sql,它工作正常。 但是,當我嘗試使用相同的邏輯在 Dask 下重新創建相同的數據框時。 它給了我 NoSuchTableError。 我確定該表存在於我的 SQL 數據庫中。
熊貓#作品:
import urllib
import sqlalchemy as sa
import pandas as pd
sql = "SELECT * FROM my_table"
params = urllib.parse.quote_plus("DRIVER={SQL Server Native Client 11.0};\
SERVER=my_server;\
DATABASE=db_name;\
Trusted_Connection=yes;")
engine = sa.create_engine('mssql+pyodbc:///?odbc_connect=%s' % params)
df = pd.read_sql(sql, engine)
print(df.head())
由於 Dask 使用的是來自 sqlalchemy 的完整 URL,我還嘗試在 sqlalchemy 中重新創建相同的連接並且它可以工作。 它只是讓我感到困惑,為什么它在 Dask 中不起作用。
sqlalchemy #作品:
import pyodbc
import sqlalchemy as sal
from sqlalchemy import create_engine
engine = sal.create_engine('mssql+pyodbc://my_server/db_name\
?driver=SQL+Server+Native+Client+11.0?trusted_connection=yes')
result = engine.execute("select * from my_table")
for row in result:
print(row[0])
Dask #NoSuchTableError:
import urllib
import sqlalchemy as sa
import dask.dataframe as dd
from sqlalchemy.engine.url import make_url
params = urllib.parse.quote_plus("DRIVER={SQL Server Native Client 11.0};\
SERVER=my_server;\
DATABASE=db_name;\
Trusted_Connection=yes;")
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
url = make_url(conn_str)
df = dd.read_sql_table('my_table', url, index_col='ID')
print(df.head())
有沒有人遇到過相同/類似的問題? 任何想法都非常感謝! 提前致謝。
在不知道有關如何設置 SQL Server 的更多詳細信息的情況下,我相信這將是 Dask 文檔中特定於 SQL Server 的內容,您需要提供schema=
關鍵字,如下所示:
dftest = dd.read_sql_table(table="table_name_only", uri=uri, index_col="somekey", schema="schema_name", divisions=[1,2,3])
請注意,這里的uri
是 SQLAlchemy 字符串,而不是連接對象。
https://docs.dask.org/en/latest/dataframe-api.html#dask.dataframe.read_sql_table
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.