Python连接SQL Server数据库失败求助(附代码及报错信息)
解决Python pyodbc连接SQL Server失败的问题
先修正代码里的明显错误
你的连接字符串给参数值加了不必要的单引号,这是pyodbc不支持的写法,同时服务器名称的转义可以优化。先调整连接代码:
# 修正后的数据库连接代码 server = r"MAURICE-PC\CLOCKIFY" # 用原始字符串避免转义问题 username = "sa" password = "clockify" database = "master" # 移除所有参数值的单引号,改用更兼容的新版ODBC驱动 connection = pyodbc.connect(f"DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}") cursor = connection.cursor()
再排查其他潜在问题
确认SQL Server实例的端口配置
打开SQL Server配置管理器,找到CLOCKIFY实例的TCP/IP协议:- 右键TCP/IP → 属性 → 切换到「IP地址」标签
- 拉到最下方的「IPAll」区域,查看TCP端口(如果是动态端口,会显示「TCP动态端口」,需要把这个端口号加到连接字符串里,格式为
SERVER=MAURICE-PC\CLOCKIFY,端口号) - 用命令
Test-NetConnection MAURICE-PC -Port 端口号测试端口是否能正常连通
检查sa账户与身份验证模式
- 打开SSMS,右键服务器 → 属性 → 安全性,确认勾选「SQL Server和Windows身份验证模式」
- 展开「安全性」→ 登录名 → 右键sa → 属性,确认账户未被禁用,且密码与代码中一致
- 右键master数据库 → 属性 → 权限,确保sa账户拥有该数据库的访问权限
更新ODBC驱动版本
你当前使用的{SQL Server}是旧版驱动,对新SQL Server版本兼容性较差,建议安装ODBC Driver 17 for SQL Server,并在连接字符串中使用该驱动名称
最后验证步骤
先在SSMS中用sa账户登录MAURICE-PC\CLOCKIFY实例,确认能正常访问master数据库,再运行修正后的Python代码测试连接。
内容的提问来源于stack exchange,提问作者maui-b
相关产品推荐
相关产品推荐

