You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MySQL中操作Pandas DataFrame?项目技术问题求助

操作MySQL中已插入的Pandas DataFrame数据

一、读取MySQL数据到DataFrame后操作

先把MySQL里的表数据读进Pandas,再用常规DataFrame方法处理:

  • 导入依赖包:
import pandas as pd
from sqlalchemy import create_engine
  • 建立MySQL连接(替换成你的数据库信息):
engine = create_engine('mysql+pymysql://用户名:密码@主机IP:端口/数据库名')
  • 读取指定表到DataFrame:
df = pd.read_sql_table('你的目标表名', engine)
  • 常规DataFrame操作示例:
    • 筛选数据:filtered_df = df[df['销量'] > 1000]
    • 新增计算列:df['利润'] = df['售价'] - df['成本']
    • 分组统计:category_stats = df.groupby('商品分类')['销量'].sum().reset_index()
  • 把更新后的数据写回MySQL:
    • 追加数据到原表:df.to_sql('你的目标表名', engine, if_exists='append', index=False)
    • 覆盖原表(谨慎使用,会清空原有数据):df.to_sql('你的目标表名', engine, if_exists='replace', index=False)
    • 更新特定行:用SQL语句精准定位,比如:
engine.execute("UPDATE 你的目标表名 SET 状态 = '已发货' WHERE 订单ID = %s", ('OD20240501',))

二、直接用SQL操作MySQL数据(适合复杂逻辑)

如果有复杂的查询、批量更新需求,直接写SQL执行更高效:

  • 执行查询并返回结果到DataFrame:
query = """
SELECT 订单ID, 用户ID, 总金额
FROM 你的目标表名
WHERE 下单时间 >= '2024-01-01'
ORDER BY 总金额 DESC
"""
high_value_orders = pd.read_sql(query, engine)
  • 执行批量更新/删除:
# 批量更新
update_query = "UPDATE 你的目标表名 SET 折扣 = 0.8 WHERE 总金额 >= 5000"
engine.execute(update_query)

# 删除无效数据
delete_query = "DELETE FROM 你的目标表名 WHERE 状态 = '已取消' AND 下单时间 < '2024-01-01'"
engine.execute(delete_query)

三、实用注意事项

  • 确保数据库账号有对应的读写权限,避免操作失败
  • 处理大表时,用分块读写避免内存溢出:
# 分块读取表数据
chunk_iter = pd.read_sql_table('你的目标表名', engine, chunksize=10000)
for chunk in chunk_iter:
    # 逐块处理数据
    pass

# 分块写入数据
df.to_sql('你的目标表名', engine, if_exists='append', index=False, chunksize=10000)
  • 表有主键的话,更新时一定要用主键定位,防止误改大量数据

内容的提问来源于stack exchange,提问作者Sanjay Rajan R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:24:59