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
相关产品推荐
相关产品推荐

