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

M1 Mac下用SQLAlchemy连接Azure SQL数据库遇驱动错误求助

解决Azure SQL Server连接时的pyodbc.InterfaceError问题

核心问题定位

你的代码存在语法错误,导致连接字符串构造失败,这是引发错误的主要原因。此外需确认ODBC驱动配置的有效性。


步骤1:修正代码中的语法错误

你当前的代码将urllib.parse.quote_plus函数本身赋值给了params,而非执行函数后的编码字符串。修正后的代码如下:

import urllib.parse
from sqlalchemy import create_engine

# 正确调用quote_plus函数,确保括号与函数名关联
params = urllib.parse.quote_plus(
    'Driver={ODBC Driver 18 for SQL Server};Server=tcp:test-server.database.windows.net,1433;Database=test-database;Uid=*****;Pwd=*****;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'
)
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
engine_azure = create_engine(conn_str, echo=True)
connection = engine_azure.connect()

步骤2:确保ODBC驱动配置被正确读取

根据odbcinst -j的输出,unixODBC默认读取/etc/odbcinst.ini和/etc/odbc.ini,符号链接可能存在权限或失效问题,建议直接复制配置文件:

sudo cp /opt/homebrew/etc/odbcinst.ini /etc/odbcinst.ini
sudo cp /opt/homebrew/etc/odbc.ini /etc/odbc.ini

复制完成后,重新注册驱动:

odbcinst -i -d -f /etc/odbcinst.ini

步骤3:验证驱动名称匹配

确保连接字符串中的驱动名称{ODBC Driver 18 for SQL Server}与odbcinst.ini中的[ODBC Driver 18 for SQL Server]完全一致(包括大小写、空格)。若仍有问题,可直接指定驱动路径替代名称:

params = urllib.parse.quote_plus(
    'Driver=/opt/homebrew/lib/libmsodbcsql.18.dylib;Server=tcp:test-server.database.windows.net,1433;Database=test-database;Uid=*****;Pwd=*****;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:25:11