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 修复了连接 URI 解析中一个长期存在但微妙的错误。以前的版本会接受
…/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
部分,因为无论如何都不需要它。
我有一个运行良好的 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 修复了连接 URI 解析中一个长期存在但微妙的错误。以前的版本会接受
…/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
部分,因为无论如何都不需要它。