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

Anvil点击按钮导出客户CSV报错:Shape of passed values is (1,1), indices imply (1,9)

问题分析与解决方案

一、ValueError: Shape of passed values is (1, 1), indices imply (1, 9) 错误原因及修复

这个错误核心是手动定义的列名数量(9个)与数据库表实际返回的列数不匹配。执行SELECT *时,数据库返回的列数和col列表里的9个列名不一致,导致pandas创建DataFrame时形状不兼容。

修复步骤:

  1. 验证表结构:检查CUSTOMER_BOOKING_INFORMATION表的实际列数,确认是否和你定义的9个列名完全对应。如果表列数不符,要么修改col列表匹配表结构,要么改用动态获取列名的方式。
  2. 动态获取列名(推荐):直接从数据库游标读取列名,避免手动定义出错。修改后的代码如下:
@anvil.server.callable
def download_data():
    cursor.execute("SELECT * FROM CUSTOMER_BOOKING_INFORMATION ORDER BY UN_TICKET_CODE ASC")
    values = cursor.fetchall()
    # 从游标描述中动态提取列名
    col = [desc[0] for desc in cursor.description]
    df = pd.DataFrame(values, columns=col)
    
    download_folder = os.path.expanduser("~")
    file_path = os.path.join(download_folder, 'test.csv')
    df.to_csv(file_path, index=False)
    
    return anvil.media.from_file(file_path)

二、Warning: admin_reports.download_csv_revenue_click does not exist 警告处理

这个警告是Anvil前端按钮的事件绑定问题:按钮download_csv_revenue被设置了点击事件处理器admin_reports.download_csv_revenue_click,但该函数并不存在。

修复步骤:

  1. 打开Anvil设计器,找到download_csv_revenue按钮。
  2. 调整按钮的Click事件绑定:
    • 如果你的逻辑是调用服务器端的download_data函数,直接在按钮的click事件中写入调用代码(如anvil.server.call('download_data'),并处理下载逻辑)。
    • 如果确实需要admin_reports.download_csv_revenue_click函数,在admin_reports模块中创建该函数。

额外优化建议

避免在服务器端生成本地文件:Anvil服务器环境是沙箱化的,本地文件操作可能存在权限问题,推荐直接在内存中生成CSV内容再转为Anvil Media对象:

@anvil.server.callable
def download_data():
    cursor.execute("SELECT * FROM CUSTOMER_BOOKING_INFORMATION ORDER BY UN_TICKET_CODE ASC")
    values = cursor.fetchall()
    col = [desc[0] for desc in cursor.description]
    df = pd.DataFrame(values, columns=col)
    
    # 内存中生成CSV内容
    from io import StringIO
    csv_buffer = StringIO()
    df.to_csv(csv_buffer, index=False)
    csv_buffer.seek(0)
    
    # 返回可下载的Media对象
    return anvil.media.from_stream(csv_buffer, 'test.csv', 'text/csv')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:30:25