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

Azure Function(Python):如何通过func.HttpRequest输出DataFrame?

解决Azure Function输出DataFrame无结果的问题

问题根源

你的代码存在两个核心问题:

  1. cursor.execute()执行SQL语句后返回None,不会直接返回查询结果,所以select_table()返回的是None,输出自然为空。
  2. 没有将数据库查询结果转换为DataFrame,也没有将数据序列化为HTTP响应可识别的格式(如JSON)。

修改步骤

  1. 正确获取查询结果并转换为DataFrame:使用cursor.fetchall()获取数据,结合cursor.description获取列名,构建DataFrame。
  2. 将DataFrame序列化为JSON:通过pandas的to_json()方法转换数据,设置合适的HTTP响应类型。
  3. 确保环境依赖安装:Azure Function需要安装pandas和mysql-connector-python。

修改后的完整代码

import azure.functions as func
import mysql.connector
import pandas as pd

config = {
    'host':' ',
    'database' : '',
    'user' : '',
    'password' : '',
    'port':'',
    'client_flags': [mysql.connector.ClientFlag.SSL],
    'ssl_ca': 'DigiCertGlobalRootG2.crt.pem'
}

def select_table():
    conn = mysql.connector.connect(**config)
    cursor = conn.cursor()
    # 执行SQL
    cursor.execute("SELECT * FROM events")
    # 获取列名
    column_names = [desc[0] for desc in cursor.description]
    # 获取查询数据
    rows = cursor.fetchall()
    # 构建DataFrame
    df = pd.DataFrame(rows, columns=column_names)
    # 关闭连接资源
    cursor.close()
    conn.close()
    return df

def main(req: func.HttpRequest) -> func.HttpResponse:
    try:
        df = select_table()
        # 将DataFrame转为JSON格式,force_ascii=False支持中文
        response_data = df.to_json(orient='records', force_ascii=False)
        # 返回JSON响应,设置正确的MIME类型
        return func.HttpResponse(response_data, mimetype="application/json", status_code=200)
    except Exception as e:
        # 异常处理,返回错误信息
        return func.HttpResponse(f"执行出错:{str(e)}", status_code=500)

依赖配置

在Azure Function的requirements.txt文件中添加以下依赖:

azure-functions
mysql-connector-python
pandas

可选输出格式

如果需要输出CSV格式,可将main函数中的代码替换为:

def main(req: func.HttpRequest) -> func.HttpResponse:
    try:
        df = select_table()
        # 转为CSV字符串
        csv_data = df.to_csv(index=False, encoding='utf-8')
        # 返回CSV响应,设置MIME类型
        return func.HttpResponse(csv_data, mimetype="text/csv", status_code=200)
    except Exception as e:
        return func.HttpResponse(f"执行出错:{str(e)}", status_code=500)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:05:16