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

Python连接MySQL服务器报错2003 (HY000):无法连接到'192.168.1.1:3306'(错误码10061)求助

解决Python连接SQL Server失败的问题

首先得指出你当前代码里最核心的问题:你用的是MySQL的驱动(mysql.connector)去连接SQL Server数据库,这完全不匹配,自然会连接失败!

mysql.connector是专门用来连接MySQL数据库的工具,而你要访问的是Windows上的SQL Server(用SSMS管理的那种),两者是不同的数据库系统,驱动不能通用。错误提示里的3306端口也是MySQL的默认端口,SQL Server默认用的是1433端口,这也能印证这个问题。

下面是具体的解决步骤:

1. 安装SQL Server的Python驱动

推荐使用pyodbc(目前最常用的SQL Server Python驱动),先通过pip安装:

pip install pyodbc

同时要确保你的Windows机器上安装了SQL Server ODBC驱动,如果没有的话,可以直接在微软官网下载匹配你SQL Server版本和系统位数的驱动包。

2. 修改代码适配SQL Server

把原来用mysql.connector的代码换成pyodbc的写法,示例如下:

import sys
import pyodbc

try:
    # 构建SQL Server连接字符串
    conn_str = (
        "DRIVER={ODBC Driver 17 for SQL Server};"
        "SERVER=192.168.1.1,1433;"  # 注意端口是1433,SQL Server默认端口
        "DATABASE=Test;"
        "UID=sa;"
        "PWD=sa;"
    )
    conn = pyodbc.connect(conn_str)
    cursor = conn.cursor()
    
    # 注意SQL Server的查询语法,这里的[DB]应该是你的表名吧?记得确认下
    query = "SELECT * FROM [DB] WHERE [Art] = 'EX'"
    cursor.execute(query)
    rows = cursor.fetchall()
    
    if not rows:
        print("No results")
        sys.exit()
    # 可以添加打印结果的代码,方便验证
    for row in rows:
        print(row)
except Exception as e:
    print(f"Error: {e}")
finally:
    # 记得关闭连接和游标,避免资源浪费
    if 'cursor' in locals():
        cursor.close()
    if 'conn' in locals():
        conn.close()

3. 额外排查要点

如果换了驱动还是连接失败,你可以检查这些点:

  • 确认SQL Server已经开启TCP/IP协议:打开SQL Server配置管理器,找到SQL Server网络配置,启用TCP/IP,并且在IP地址设置里确认1433端口是启用状态。
  • 检查服务器防火墙是否放行1433端口:无论是Windows防火墙还是其他网络防火墙,都要允许1433端口的入站连接。
  • 确认sa账号是否允许远程登录:在SSMS里,右键登录名sa,查看属性里的“状态”,确认“登录”是启用的,并且在“服务器角色”里有足够的权限。
  • 测试服务器连通性:在运行脚本的机器上,用Test-NetConnection 192.168.1.1 -Port 1433(PowerShell命令)或者telnet 192.168.1.1 1433测试端口是否能通。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:43:09