Dask如何在Python中读取SQL Server



我必须使用dask数据帧,因为我的数据是巨大的1.5亿行和5万列

我试着用

conn = pyodbc.connect('Driver={SQL Server};'
'Server=DELL;'
'Database=DB;'
'Trusted_Connection=yes;')
df_features = dd.read_sql_table(table="Features" , con=conn , index_col="ID")

我收到这个错误

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

所以我尝试了这个

df_features = dd.read_sql_table(table="Features" , uri="mssql+pyodbc:///?odbc_connect=Driver={SQL Server}; Server=DELL; Database=DB; Trusted_Connection=yes;", index_col="ID")

得到这个错误

OperationalError: (pyodbc.OperationalError) ('08001', '[08001] [Microsoft][ODBC SQL Server Driver]Neither DSN nor SERVER keyword supplied (0) (SQLDriverConnect)')
(Background on this error at: http://sqlalche.me/e/e3q8)

如何在dask数据帧中连接到SQL Server?

@Giorgos Myrianthou在正确的行上:您需要一个URI,而不是一些连接对象。这个URI的格式需要是SQLalchemy能够理解的,所以请阅读他们的文档,了解如何为ODBC格式化。

文档:https://docs.sqlalchemy.org/en/13/dialects/mysql.html#module-sqlalchemy.dialects.mysql.pyodbc

原因是,Dask需要能够串行化和传递任务,但连接对象不能串行化。但是,如果您只使用线程,您可以传递一个SQLalchemy引擎对象(这是在master中(。

Windows ODBC驱动程序管理器不需要关键字和=之间有空格


以下应该可以做到:

df_features = dd.read_sql_table(
table="Features",
uri="mssql+pyodbc:///?odbc_connect=DRIVER={SQL Server};SERVER=my.db.server;DATABASE=DB;Trusted_Connection=yes;",
index_col="ID"
)

相关内容

  • 没有找到相关文章

最新更新