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

MacBook Pro M1 Pro环境下pyodbc及驱动安装与SQL连接故障求助

解决M1 Pro Mac上pyodbc连接SQL Server的问题

一、统一ARM64架构的环境依赖

M1 Pro为ARM64架构,需确保所有依赖适配该架构,避免x86版本导致的库文件异常:

  • 先确认Homebrew为ARM版(路径应为/opt/homebrew),若当前是x86版(路径/usr/local),需重新安装ARM版Homebrew
  • 安装适配ARM的unixODBC:
    brew install unixodbc
    
  • 验证unixODBC配置路径:
    odbcinst -j
    
    输出的DRIVERS和SYSTEM DATA SOURCES路径需指向/opt/homebrew/etc/目录,确认是ARM版本的配置

二、安装适配ARM的微软ODBC驱动

微软已提供ARM版ODBC驱动17/18,放弃无ARM支持的Driver13:

安装ODBC Driver 18 for SQL Server(推荐)

brew install msodbcsql18 mssql-tools18

安装后手动注册驱动到系统配置:

cat << EOF >> /opt/homebrew/etc/odbcinst.ini
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/homebrew/lib/libmsodbcsql.18.dylib
UsageCount=1
EOF

验证驱动是否注册成功:

odbcinst -q -d -n "ODBC Driver 18 for SQL Server"

输出驱动信息即为安装成功

三、针对不同错误调整连接字符串

1. 解决ODBC Driver 18的SSL证书验证失败

Driver18默认强制SSL验证,若为内部自签证书或无需SSL,添加TrustServerCertificate=yes参数:

import pyodbc

conn_str = (
    "DRIVER={ODBC Driver 18 for SQL Server};"
    "SERVER=你的SQL服务器地址,端口;"  # 示例:192.168.1.100,1433
    "DATABASE=目标数据库名;"
    "UID=数据库账号;"
    "PWD=数据库密码;"
    "TrustServerCertificate=yes;"
)
conn = pyodbc.connect(conn_str)

若需强制验证证书,将服务器CA证书导入macOS钥匙串,连接字符串保留默认Encrypt=yes即可

2. 解决ODBC Driver 17的登录失败

  • 若使用SQL账号登录,检查账号密码正确性,同时添加TrustServerCertificate=yes(内部服务器场景):
    conn_str = (
        "DRIVER={ODBC Driver 17 for SQL Server};"
        "SERVER=你的SQL服务器地址,端口;"
        "DATABASE=目标数据库名;"
        "UID=数据库账号;"
        "PWD=数据库密码;"
        "TrustServerCertificate=yes;"
    )
    
  • 若使用Windows域账号,需确保Mac已加入公司域,连接字符串改用Trusted_Connection=yes
  • 额外检查:SQL Server防火墙是否允许当前Mac IP访问,SQL Server是否开启混合模式认证(SQL账号场景)

3. 解决Driver13库文件找不到问题

Driver13无ARM版本,直接替换为Driver17/18的ARM版即可

四、验证pyodbc与驱动的兼容性

由于你是源码安装pyodbc,需确认编译时链接了ARM版unixODBC:

  • 找到pyodbc的安装文件路径:
    pip3 show pyodbc | grep Location
    
  • 检查链接的库:
    otool -L /path/to/pyodbc.cpython-39-darwin.so
    
    输出需包含/opt/homebrew/lib/libodbc.2.dylib,若为x86路径,需重新安装pyodbc:
    pip3 uninstall pyodbc
    export PATH="/opt/homebrew/bin:$PATH"
    export LDFLAGS="-L/opt/homebrew/lib"
    export CPPFLAGS="-I/opt/homebrew/include"
    pip3 install --no-binary :all: pyodbc
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 11:55:21