【发布时间】:2020-06-29 22:19:41
【问题描述】:
我正在尝试使用 SQLAlchemy 和 pyobdc 将数据帧上传到 Azure SQL Server 数据库上的数据库。我已建立连接,但上传时出现错误提示
(pyodbc.Error) ('IM010', '[IM010] [Microsoft][ODBC Driver Manager] Data source name too long (0) (SQLDriverConnect)')
我不确定这个错误来自哪里,因为我之前使用过 sqlalchemy 没有问题。我在下面附上了我的代码,有人可以帮我诊断问题吗?
username = 'bcadmin'
password = 'N@ncyR2D2'
endpoint = 'bio-powerbi-bigdata.database.windows.net'
engine = sqlalchemy.create_engine(f'mssql+pyodbc://{username}:{password}@{endpoint}')
df.to_sql("result_management_report",engine,if_exists='append',index=False)
我知道其他 ETL 方法,例如数据工厂和 SSMS,但我更喜欢使用 pandas 作为 ETL 过程。
请帮我解决这个错误。
【问题讨论】:
-
也许尝试在端点名称后显式添加
:1433。看起来 SQLA/pyodbc 正在将服务器名称解释为 DSN 名称。 -
转义密码,其中包含
@。 -
@IljaEverilä 我尝试转义密码,但没有解决错误。添加 :1433 也无济于事。我想知道问题可能是什么。
-
您的 URL 缺少将其与 DSN 连接区分开来所需的尾随
/,因此主机名被视为 DSN(请参阅 docs.sqlalchemy.org/en/13/dialects/…)。 -
@IljaEverilä 嗨,Ilja 我尝试了尾随 /,但它似乎也不起作用。我迷路了。
标签: pandas sqlalchemy azure-sql-database etl pyodbc