pandas读取MySQL数据库数据主要通过read_sql()
函数实现,核心步骤包括:建立数据库连接、编写SQL查询、转换为DataFrame。关键亮点为:支持灵活SQL查询、自动类型转换、高效分块读取大数据。
-
安装必要库
使用pip install pandas sqlalchemy pymysql
安装pandas(数据处理)、SQLAlchemy(连接工具)和PyMySQL(MySQL驱动)。若需其他数据库驱动,可替换为mysql-connector
等。 -
建立数据库连接
通过SQLAlchemy创建连接字符串,格式为:"mysql+pymysql://用户名:密码@主机:端口/数据库名"
。例如:pythonCopy Code
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://user:pass@localhost:3306/db_name")
-
执行SQL查询并读取数据
使用pd.read_sql()
直接执行SQL语句,返回DataFrame。支持完整查询或表名快速读取:pythonCopy Code
import pandas as pd # 方式1:写SQL语句 df = pd.read_sql("SELECT * FROM table WHERE id > 100", con=engine) # 方式2:直接读整表 df = pd.read_sql_table("table_name", con=engine)
-
高级功能应用
- 分块读取:通过
chunksize
参数分批加载大数据,避免内存不足(如chunksize=1000
)。 - 参数化查询:用
params
传递变量,防止SQL注入,如read_sql("SELECT * FROM table WHERE id=%(id)s", params={"id": 1})
。 - 类型转换:自动将数据库类型映射为pandas类型,可通过
dtype
参数手动指定列类型。
- 分块读取:通过
-
关闭连接与资源释放
显式调用engine.dispose()
关闭连接,或使用with
语句自动管理。大数据处理时建议及时释放资源。
提示:对频繁查询可缓存DataFrame以减少数据库负载,复杂操作建议先在SQL中优化查询逻辑再读取。