Python使用mysql.connector连接MySQL报错2003无法连接服务器求助
问题根因
你遇到的报错由两个核心错误导致:
- 你使用的
host格式server-server.dev.company.com\IN11是SQL Server的实例命名规则,MySQL本身不支持「反斜杠+实例名」的主机写法,MySQL仅通过「主机地址+端口」定位服务,且Python字符串中的反斜杠属于转义字符,会导致参数解析异常。 - 报错提示
%u format: a number is required, not str说明端口参数被传入了字符串类型的值,或是host解析异常后将非法内容识别为端口参数,触发类型校验失败。
你修改其他参数仍报相同错误的原因是:参数解析在校验host和port阶段就已经失败,还没走到实际发起网络连接的步骤,所以修改账号、库名等其他参数不会改变报错结果。
解决思路
先确认你要连接的数据库类型,对应选择解决方案:
方案1:目标库为MySQL
- 第一步:删除host参数中的
\IN11后缀,仅保留纯主机地址server-server.dev.company.com - 第二步:补充端口参数
port,值为数字类型,不要加引号,默认MySQL端口为3306,示例代码:
import mysql.connector cnx = mysql.connector.connect( user='替换为实际用户名', password='替换为实际密码', host='server-server.dev.company.com', port=3306, # 替换为实际MySQL服务端口,必须为数字类型 database='替换为实际库名' ) cnx.close()
- 第三步:如果仍连接失败,可先通过本地MySQL客户端工具测试目标主机端口的连通性,排除网络、账号权限等问题。
方案2:目标库为SQL Server(符合你当前使用的实例名格式)
你选错了连接库,MySQL连接库无法连接SQL Server,替换为pyodbc或pymssql库即可,示例pyodbc连接代码:
import pyodbc # 注意字符串前加r避免反斜杠转义 cnx = pyodbc.connect(r'DRIVER={ODBC Driver 17 for SQL Server};SERVER=server-server.dev.company.com\IN11;DATABASE=替换为实际库名;UID=替换为实际用户名;PWD=替换为实际密码') cnx.close()
内容的提问来源于stack exchange,提问作者python_help
相关产品推荐
相关产品推荐

