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

如何让Python Flask API返回按产品分组的指定格式FAQ数据?

解决Flask API FAQ数据按产品分组的格式转换问题

修改后的API代码

@app.route('/getProductFaqs')
def productfaqs():
    try:
        conn = mysql.connect()
        cursor = conn.cursor(pymysql.cursors.DictCursor)
        # 若表中有productid字段,推荐使用这条SQL替代下方语句,避免字符串拆分的潜在问题
        # cursor.execute("SELECT productid, product_question, product_answer FROM questionFAQ")
        cursor.execute("SELECT id, product_name, product_question, product_answer FROM questionFAQ")
        rows = cursor.fetchall()
        
        # 按产品分组构建数据结构
        product_groups = {}
        for row in rows:
            # 从product_name提取productid(示例:"product 1" → 1)
            # 若表中有productid字段,直接替换为 productid = row['productid']
            product_name = row['product_name']
            productid = int(product_name.split()[1])
            
            # 构造单个问答对象
            faq_entry = {
                "Question": row['product_question'],
                "Answer": row['product_answer']
            }
            
            # 将问答对象添加到对应产品的列表中
            if productid not in product_groups:
                product_groups[productid] = []
            product_groups[productid].append(faq_entry)
        
        # 转换为目标格式的列表
        formatted_result = []
        for pid, faqs in product_groups.items():
            formatted_result.append({
                "productid": pid,
                "faqs": faqs
            })
        
        resp = jsonify(formatted_result)
        resp.status_code = 200
        return resp
    except Exception as e:
        print(e)
        return jsonify({"error": str(e)}), 500
    finally:
        cursor.close()
        conn.close()

关键逻辑说明

  • 数据分组:使用字典product_groups存储每个产品对应的问答集合,键为productid,值为问答对象数组,确保同一产品的问答被归类到一起。
  • 格式转换:将字典结构转换为数组结构,每个元素包含productid和对应的问答列表,符合目标输出格式要求。
  • 异常处理优化:新增了错误响应返回,便于前端捕获和处理异常情况。

正确的目标返回格式示例

[
  {
    "productid": 1,
    "faqs": [
      {
        "Question": "What is product 1?",
        "Answer": "answer product 1"
      }
    ]
  },
  {
    "productid": 2,
    "faqs": [
      {
        "Question": "What is product 2?",
        "Answer": "answer product 2"
      }
    ]
  }
]

注意事项

如果你的数据库表中存在专门的productid字段,请务必修改SQL查询语句,直接获取productid字段值,避免通过字符串拆分的方式(这种方式在product_name格式变化时容易出错)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:45:42