使用pd.read_sql_table从MySQL读取数据至Pandas失败的问题求助
问题根源
pd.read_sql_table() 没法直接用 mysql.connector 创建的原生连接对象,它得依赖SQLAlchemy引擎来适配不同数据库的语法差异。你当前用的原生连接被pandas误识别成了SQLite连接,导致它执行了SQLite专属的查询语句(查询sqlite_master表),但MySQL根本没有这个系统表,自然就出现参数不匹配的错误。
解决步骤
- 先安装SQLAlchemy(如果还没装的话):
pip install sqlalchemy
- 改用SQLAlchemy创建数据库引擎,替换原有的
mysql.connector连接:
import pandas as pd from sqlalchemy import create_engine # 按格式拼接连接字符串:mysql+mysqlconnector://用户名:密码@主机:端口/数据库名 engine = create_engine('mysql+mysqlconnector://root:Veera@123@localhost:3306/sql_prac') # 现在可以正常调用read_sql_table读取表了 df = pd.read_sql_table("dummy1", con=engine) print(df)
补充说明
pd.read_sql() 和 pd.read_sql_query() 能直接用原生连接,是因为这两个函数是执行你自己编写的SQL语句,pandas只负责执行逻辑;但pd.read_sql_table()需要自动生成查询表结构的SQL语句,这时候必须依赖SQLAlchemy来针对不同数据库生成适配的语句,所以不能直接用原生连接。
内容的提问来源于stack exchange,提问作者gangula veerareddy
相关产品推荐
相关产品推荐

