如何在Pandas中建立MySQL连接?遇1045权限错误求排查
问题分析与解决
核心错误原因
你遇到的OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)"),本质是Pandas连接MySQL时未正确传递密码,或者密码参数未被识别。错误提示里的using password: NO明确说明连接过程中没有提供有效密码。
具体问题点
对比你的Django数据库配置,能看到一个关键细节:Django配置里用的是'Password'(首字母大写),但Python连接MySQL的标准库(如pymysql、mysqlclient)以及基于它们的Pandas连接,都要求使用**小写的password**作为参数名。如果你的Pandas连接代码照搬了Django的键名,会导致密码参数被忽略,最终触发无密码登录的权限错误。
正确的Pandas连接MySQL方式
推荐使用sqlalchemy创建引擎(Pandas官方推荐的方式),示例代码如下:
import pandas as pd from sqlalchemy import create_engine # 格式:mysql+驱动名://用户名:密码@主机/数据库名 engine = create_engine('mysql+pymysql://root:Antimk@localhost/test') # 测试连接并读取数据 df = pd.read_sql('SELECT * FROM your_table_name', engine)
如果用原生pymysql连接,参数要注意小写:
import pymysql import pandas as pd connection = pymysql.connect( host='localhost', user='root', password='Antimk', # 这里必须是小写的password database='test' ) c = connection.cursor()
额外排查点
- 确认MySQL的
root用户确实允许localhost登录,且密码Antimk拼写、大小写完全正确 - 如果MySQL端口不是默认的3306,需要在连接参数里补充
port=3306(或你的实际端口)
内容的提问来源于stack exchange,提问作者Antim Kushwah
相关产品推荐
相关产品推荐

