首页 > 解决方案 > SQLalchemy 在版本 1.4.15 之后无法连接到 SQL Server

问题描述

我有一个运行良好的 python 脚本,但是如果我将 SQLalchemy 升级到比 1.4.15 更新的版本(或者这是我最后一次工作),那么我会收到错误消息:

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

我在 python 中的连接如下所示:

import sqlalchemy
from sqlalchemy import create_engine


#Create connection to SQL
NAV = 'mssql://<server>/<database>?driver=SQL+Server+Native+Client+11.0?trusted_connection=yes'
engine = create_engine(NAV, fast_executemany=True)

如果我将 SQLalchemy 降级到 1.4.15,它会再次正常工作。

我不想永远停留在旧版本上的任何想法:-)

标签: pythonsqlalchemy

解决方案


SQLAlchemy 1.4.16 修复了连接 U​​RI 解析中一个长期存在但微妙的错误。以前的版本会接受

…/dbname?driver=SQL+Server+Native+Client+11.0?trusted_connection=yes

并且基本上忽略第二个之后(包括)之后的任何内容?。现在 SQLAlchemy 要求后续的 (2nd, 3rd, ...) 参数用&, not分隔?,因此“driver=”被解释为

SQL+Server+Native+Client+11.0?trusted_connection=yes

而不仅仅是

SQL+Server+Native+Client+11.0

而前者(“+”未转义为空格)与任何已知的 ODBC 驱动程序名称不匹配。

正如对问题的评论中所述,解决方法是简单地省略该?trusted_connection=yes部分,因为无论如何都不需要它。


推荐阅读