python - 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,它会再次正常工作。
我不想永远停留在旧版本上的任何想法:-)
解决方案
SQLAlchemy 1.4.16 修复了连接 URI 解析中一个长期存在但微妙的错误。以前的版本会接受
…/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
部分,因为无论如何都不需要它。
推荐阅读
- flutter - Flutter 未处理异常:DioError [DioErrorType.other]
- airflow - 如何允许用户在 UI 中查看和运行单个 DAG
- node.js - Nestjs中同一模块中的多个服务
- apache-kafka - 未授权访问主题 - 使用 Kerberos SASL 协议实现的 Kafka 中的聚合存储错误
- ios - 广播视图 (MTHKView) 未扩展全屏
- python - 如何列出 /tmp 文件夹中的文件
- flutter - 如何在容器中显示国家代码
- python - MLKNN - __int__() 采用 1 个位置参数,但使用 fit 方法给出了 2 个
- python - 如何从嵌套字典中的值中删除特殊字符
- angular - 传单使功能同步