You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境通过PuTTY私钥、SQLAlchemy和PyODBC连接SQL Server报错求解

问题解决方案

1 确认已注册的ODBC驱动名称

报错核心原因是连接字符串中填写的驱动名称与Linux系统中实际注册的ODBC驱动名称不匹配,SQL Server Native Client 11.0是Windows平台的驱动命名,Linux平台下微软官方SQL Server驱动命名规则不同。
执行以下命令查询系统中所有已注册的ODBC驱动:

odbcinst -q -d

输出结果通常为以下形式(版本号可能有差异):

[ODBC Driver 17 for SQL Server]
[ODBC Driver 18 for SQL Server]

2 修改连接字符串参数

  • 把DRIVER参数的值替换为上一步查询到的驱动完整名称,注意Linux环境区分大小写,必须完全匹配
  • 补全缺失的验证参数:如果是账号密码登录需要补充PWD=你的密码;,如果使用ODBC Driver 18及以上版本,默认开启SSL证书校验,无合法证书的场景需要添加TrustServerCertificate=yes;跳过校验
  • 如果你手中的.ppk是SSH密钥,说明需要先建立SSH隧道映射SQL Server端口,再将SERVER参数修改为localhost,本地映射端口

修改后的代码示例:

import urllib.parse
import pandas as pd
import sqlalchemy as sa

# 注意替换DRIVER名称、密码等参数为你实际的配置
params = urllib.parse.quote_plus(
    "DRIVER={ODBC Driver 17 for SQL Server};"
    "SERVER=dagger;"
    "DATABASE=test;"
    "UID=ubuntu;"
    "PWD=你的登录密码;"
    "TrustServerCertificate=yes;"
)
engine = sa.create_engine("mssql+pyodbc:///?odbc_connect={}".format(params))
df = pd.read_sql("SELECT * FROM ROBALS", engine)

3 可选:修复依赖异常

如果修改参数后仍报错,重新编译安装pyodbc确保其正确关联unixODBC组件:

pip uninstall -y pyodbc && pip install pyodbc

内容的提问来源于stack exchange,提问作者nsk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:15:03