mysql pandas读取mysql数据方法_mysql数据分析类库-mysql教程

pandas.read_sql()是读取MySQL数据的首选方法,需先创建SQLAlchemy引擎,支持参数化查询防注入;read_sql_table()仅适用于无条件全表读取;大数据量应分块处理,优先SQL层聚合。

用 pandas.read_sql() 读取 MySQL 数据最直接

绝大多数情况下,pandas.read_sql() 是首选。它底层调用 SQLAlchemy,兼容性好、语法简洁,且能自动推断列类型(如 DATETIME → datetime64[ns])。

关键前提是先建好 SQLAlchemy 引擎:

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://user:password@localhost:3306/dbname')

然后读取:

import pandas as pd
df = pd.read_sql("SELECT * FROM users WHERE created_at > '2024-01-01'", engine)
  • SQL 语句必须是字符串,不支持参数化查询的占位符(如 %s),要用 params= 参数传入
  • 若 SQL 含变量,推荐用 pd.read_sql("SELECT * FROM t WHERE id = %(id)s", engine, params={'id': 123})
  • 避免直接拼接字符串防 SQL 注入,尤其是用户输入参与查询时

read_sql_table() 只适合整表导出,不支持 WHERE 或 JOIN

pd.read_sql_table() 本质是“把整张表当视图读”,不走 SQL 解析,所以不能加条件、不能关联其他表,也不能用函数或别名。它快,但场景极窄。

适用情形只有:确认要全量加载某张小表,且表结构稳定、无敏感字段。

  • 必须指定 table_name 和 con(引擎),不能传 SQL 字符串
  • 支持 schema 参数读取非默认 schema 的表,例如 read_sql_table('logs', engine, schema='prod')
  • 如果表有自增主键,可配合 chunksize 分批读,但注意它不会自动按主键排序,需额外加 ORDER BY —— 此时不如直接用 read_sql()

MySQL 连接驱动选 pymysql 还是 mysqlclient?

两者都支持,但行为有差异:pymysql 纯 Python 实现,安装简单(pip install pymysql),Windows/macOS 兼容性好;mysqlclient 是 C 扩展,性能略高,但编译依赖多(尤其 macOS 需 Xcode command line tools)。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » mysql pandas读取mysql数据方法_mysql数据分析类库-mysql教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4011040+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4011040+
  • 本周更新: 0+
  • 最后更新: 2026-03-16