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

Pyodbc用localhost连SQL Server超时,127.0.0.1正常,求解决方案

解决Pyodbc用localhost连接SQL Server失败的问题

可能原因及对应解决方法

1. localhost解析到IPv6导致连接失败

你的hosts文件中::1也映射了localhost,使用localhost连接时,ODBC驱动可能优先尝试IPv6地址,但SQL Server大概率未开启IPv6监听。

解决步骤:

  • 打开SQL Server配置管理器,找到SQL Server网络配置 -> 对应实例的协议
  • 确认TCP/IP已启用,双击打开其属性
  • 切换到IP地址标签,找到IP6项,将已启用设为是,并保证TCP端口与IPv4配置一致(默认1433)
  • 若无需IPv6,也可注释hosts文件中::1 localhost这一行(行首加#),让localhost仅解析到127.0.0.1

2. 指定SQL Server实例名或端口

如果你的SQL Server是命名实例(非默认实例),直接用localhost无法定位实例,需补充实例名或端口:

# 指定命名实例(示例实例名为SQLEXPRESS)
cnxn_str = (
    "Driver={ODBC Driver 17 for SQL Server};"
    "Server=localhost\\SQLEXPRESS;"
    "Database=**;"
    "UID=**;"
    "PWD=**;"
)

# 或直接指定端口(默认1433)
cnxn_str = (
    "Driver={ODBC Driver 17 for SQL Server};"
    "Server=localhost,1433;"
    "Database=**;"
    "UID=**;"
    "PWD=**;"
)

3. 验证SQL Server监听状态

打开命令提示符,执行以下命令检查端口监听:

netstat -ano | findstr :1433

若未看到0.0.0.0:1433或[::]:1433的记录,说明SQL Server未在对应地址监听,需回到配置管理器启用TCP/IP并重启SQL Server服务。

4. 强制使用TCP协议连接

在连接字符串中添加tcp:前缀,强制驱动使用TCP协议,避免尝试命名管道等其他连接方式:

cnxn_str = (
    "Driver={ODBC Driver 17 for SQL Server};"
    "Server=tcp:localhost,1433;"
    "Database=**;"
    "UID=**;"
    "PWD=**;"
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:18:25