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

使用pymysql配合pandas查询MySQL数据返回NaN的问题咨询

问题原因

pd.read_sql_query执行完SQL查询后会直接返回DataFrame对象,你执行的SQL语句是SELECT name FROM matomo_site,所以返回的DataFrame默认列名为name。后续你手动构造新DataFrame时指定了columns=['a'],但原结果里不存在名为a的列,pandas找不到匹配的列就会自动填充为NaN。
该问题和你猜测的「数据处于加密数据空间」没有任何关联。

修复方案

你可以任选以下任意一种方法修改代码:

  • 方法1:读取SQL结果时直接重命名列,不需要额外构造新DataFrame
try:
    SQL_Query = pd.read_sql_query(
        '''SELECT name FROM matomo_site''',db
    )
    # 直接重命名列即可
    df0 = SQL_Query.rename(columns={'name':'a'})
except:
    print("Error")
    db.rollback()
  • 方法2:构造新DataFrame时传入对应列的值,而非整个原DataFrame
try:
    SQL_Query = pd.read_sql_query(
        '''SELECT name FROM matomo_site''',db
    )
    # 取出name列的数值再构造新DataFrame
    df0=pd.DataFrame(SQL_Query['name'].values, columns=['a'])
except:
    print("Error")
    db.rollback()
冗余代码说明

你当前代码里导入了sqlalchemy、实例化了cursor但全程没有使用,属于冗余代码可以直接删除,不会影响查询功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:15:03