作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Pandas 的 read_sql,它工作正常。但是,当我尝试使用相同的逻辑在 Dask 下重新创建相同的数据框时。它给了我 NoSuchTableError。我确定该表存在于我的 SQL 数据库中。
Pandas #作品:
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 中不起作用。
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 字符串,而不是连接对象。
关于python - Dask 中的 read_sql_table 返回 NoSuchTableError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64126238/
我正在使用 PostgreSQL+Psycopg2,SQLAlchemy。我已经使用 pgAdminIII 工具创建了我的数据库“new_db”,并在其中创建了一个新模式“new_db_schema”
我有一个使用 Pandas 的 read_sql,它工作正常。但是,当我尝试使用相同的逻辑在 Dask 下重新创建相同的数据框时。它给了我 NoSuchTableError。我确定该表存在于我的 SQ
我是一名优秀的程序员,十分优秀!