Mac上pyodbc连接SQL Server失败求助:驱动文件找不到错误
解决Mac上pyodbc连接SQL Server驱动找不到的问题
1. 先确认驱动文件实际存在
首先执行命令验证驱动路径是否正确:
ls /opt/homebrew/lib/libmsodbcsql.18.dylib
如果返回No such file or directory,说明你可能是Intel架构Mac(homebrew路径为/usr/local/lib),或者驱动安装路径有误。此时用以下命令查找实际路径:
find / -name "libmsodbcsql.18.dylib" 2>/dev/null
找到实际路径后替换到连接字符串或odbcinst.ini中。
2. 利用odbcinst.ini配置简化连接(推荐)
既然你的odbcinst.ini已有对应内容,确保其条目格式正确(以ODBC Driver 18为例):
[ODBC Driver 18 for SQL Server] Description=Microsoft ODBC Driver 18 for SQL Server Driver=/opt/homebrew/lib/libmsodbcsql.18.dylib UsageCount=1
此时连接字符串无需写完整驱动路径,直接用驱动名称,避免路径写错:
conn = pyodbc.connect( 'DRIVER={ODBC Driver 18 for SQL Server};' 'SERVER=localhost,1433;' # Docker容器映射的默认端口 'DATABASE=你的数据库名;' 'UID=sa;' 'PWD=你的SQL Server密码;' 'Encrypt=yes;' 'TrustServerCertificate=yes;' # Docker容器未配置证书时需添加 )
3. 若坚持使用驱动路径,确保路径绝对正确
如果一定要在连接字符串里写完整路径,需注意:
- M1/M2 Mac的homebrew路径是
/opt/homebrew,Intel Mac是/usr/local - 确认驱动文件名准确,比如是否是
libmsodbcsql.18.dylib还是libmsodbcsql.17.dylib(取决于安装版本)
4. 验证unixODBC与驱动的兼容性
执行命令检查unixODBC是否能识别驱动:
odbcinst -q -d
如果能列出[ODBC Driver 18 for SQL Server],说明驱动已被正确识别,此时用驱动名称连接更可靠。
5. odbc.ini配置(可选)
odbc.ini用于定义DSN(数据源名称),若需用DSN连接,可添加如下内容:
[MySQLServerDSN] Driver=ODBC Driver 18 for SQL Server Server=localhost,1433 Database=你的数据库名 UID=sa PWD=你的密码 Encrypt=yes TrustServerCertificate=yes
之后连接字符串可简化为:
conn = pyodbc.connect('DSN=MySQLServerDSN;')
内容的提问来源于stack exchange,提问作者kenwqy
相关产品推荐
相关产品推荐

