无法使用 sqlalchemy 建立连接 SQL Server

Posted

技术标签:

【中文标题】无法使用 sqlalchemy 建立连接 SQL Server【英文标题】:Can't establish connection SQL Server using sqlalchemy 【发布时间】:2019-08-09 10:19:41 【问题描述】:

我正在尝试使用 Python 从 Pandas 数据帧上传到 SQL Server 表,但我无法使用 sqlalchemy 成功创建连接。我知道我首先需要使用 create_engine() 创建一个引擎对象,然后使用 engine.connect() 创建一个连接对象,但是我在 create_engine() 中输入的任何字符串似乎都不起作用。我尝试了以下方法:

engine = create_engine('mssql+pyodbc://myServer/myDB')
conn = engine.connect()

和:

engine = create_engine('mssql+pyodbc://Server=myServer;Database=myDB;')
conn = engine.connect()

和:

engine = create_engine('mssql+pyodbc://Driver=SQL Server;Server=myServer;Database=myDB;Trusted_Connection=yes;')
conn = engine.connect()

但都导致以下错误:

InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

我也试过了:

engine = create_engine('mssql+pyodbc://Driver=SQL Server Native Client 11.0;Server=myServer;Database=myDB;Trusted_Connection=yes;')
conn = engine.connect()

导致以下错误:

DBAPIError: (pyodbc.Error) ('IM010', '[IM010] [Microsoft][ODBC Driver Manager] 数据源名称太长 (0) (SQLDriverConnect)')

虽然我可以像这样使用 pyodbc 成功连接:

conn = pyodbc.connect('DRIVER=SQL Server;Server=myServer;Database=myDB;Trusted_Connection=yes;')

我似乎无法为 sqlalchemy 做这项工作。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

解决办法:

engine = create_engine('mssql+pyodbc://ERRSTSDBP2/ActPri?driver=SQL+Server+Native+Client+11.0')

感谢 norbeq 让我一路走好!

【讨论】:

【参考方案2】:

您可以尝试这样的连接:

engine = create_engine('mssql+pyodbc://user:password@host:port/myDB') conn = engine.connect()

【讨论】:

我没有密码,我通过 Windows 身份验证连接。 “主机:端口”是什么意思?我尝试了以下,它没有工作: engine = create_engine('mssql+pyodbc://login@myServer/myDB') conn = engine.connect() 好的,引擎应该是:engine = create_engine('mssql+pyodbc://@myServer/myDB?trusted_connection=yes&driver=SQLServer+Native+Client+11.0') 仍然收到此错误:InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') 我明白了!解决方案:engine = create_engine('mssql+pyodbc://myServer/myDB?driver=SQL+Server+Native+Client+11.0')

以上是关于无法使用 sqlalchemy 建立连接 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy

SQLAlchemy

SqlAlchemy

SQLAlchemy

SQLAlchemy

SQLAlchemy