使用to_sql将DataFrame写入SQL时无法连接MySQL服务器
解决SQLAlchemy连接MySQL失败的问题
核心问题:连接字符串格式错误
你当前的连接字符串mysql+pymysql://myusername:mypassword@3306/task_db存在格式错误——@后面直接写端口号3306,会被SQLAlchemy识别为主机名而非端口,这是导致连接失败的直接原因。
修正后的连接字符串
正确格式需要明确指定本地主机地址(localhost或127.0.0.1),端口号放在主机地址后用冒号分隔:
engine = db.create_engine("mysql+pymysql://myusername:mypassword@localhost:3306/task_db") # 或使用IP地址 engine = db.create_engine("mysql+pymysql://myusername:mypassword@127.0.0.1:3306/task_db")
其他排查方向
如果修正后仍报错,检查以下几点:
- 确认MySQL服务正在运行:Windows可通过任务管理器查看,Linux执行
systemctl status mysql;未启动则手动启动服务。 - 验证端口正确性:打开MySQL Workbench查看连接配置,确认端口确实为3306(部分场景下MySQL会被配置为其他端口)。
- 检查用户权限:确保
myusername拥有task_db的访问权限,且允许从本地连接。可在MySQL中执行:GRANT ALL PRIVILEGES ON task_db.* TO 'myusername'@'localhost'; FLUSH PRIVILEGES; - 兼容版本检查:若SQLAlchemy版本较新,需确保pymysql版本适配,执行以下命令更新到稳定版:
pip install --upgrade pymysql sqlalchemy
内容的提问来源于stack exchange,提问作者Peter M
相关产品推荐
相关产品推荐

