SQLalchemy 在 1.4.15 版本后无法连接到 SQL 服务器

SQLalchemy fails after version 1.4.15 to connect to SQL Server

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

sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 (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,它又可以正常工作了。

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

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

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

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

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

而不只是

SQL+Server+Native+Client+11.0

并且前者('+'未转义为 space)不匹配任何已知的 ODBC 驱动程序名称。

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