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

如何去除pandas read_sql读取MySQL返回结果的默认行号列

pandas read_sql读取结果默认带行号的效果

这列行号不是MySQL查询返回的表字段,是pandas DataFrame自带的默认行索引,不属于查询结果本身的内容,完全可以根据使用场景去除,对应处理方法如下:

不同场景的去除方案
  • 仅预览/打印/导出时不想显示行号
    不需要修改DataFrame本身结构,只要在输出、导出方法中传入index=False参数即可:
    import pandas as pd
    from sqlalchemy import create_engine
    
    # 连接数据库读取数据
    engine = create_engine("mysql+pymysql://账号:密码@数据库地址/库名")
    df = pd.read_sql("SELECT * FROM 目标表名", con=engine)
    
    # 控制台打印时不显示行号
    print(df.to_string(index=False))
    
    # 导出为CSV/Excel文件时不写入行号
    df.to_csv("结果.csv", index=False)
    df.to_excel("结果.xlsx", index=False)
    
    如果是在Jupyter类环境中直接预览DataFrame,想全局默认隐藏索引,可以提前配置pandas参数:
    # 全局关闭DataFrame预览时的索引显示
    pd.set_option("display.show_index", False)
    
  • 需要彻底移除DataFrame的默认数字索引
    可以直接重置索引并丢弃原索引列,或者用表中自带的业务主键替换默认索引:
    # 方式1:丢弃默认生成的数字索引
    df = df.reset_index(drop=True)
    
    # 方式2:用表内自带的唯一字段(比如主键id)作为索引,替换默认数字行号
    df = df.set_index("表内主键字段名")
    

补充说明:pd.read_sql方法本身没有提供读取时跳过索引的参数,因为这列索引是pandas自动为DataFrame生成的结构,和数据库查询逻辑无关,不需要修改SQL语句做特殊处理。

内容的提问来源于stack exchange,提问作者suj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:51:19