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

Flask+MongoDB REST API报404错误,无法获取指定字段数据求助

解决Flask-MongoDB REST API的404错误与多字段数据获取问题

首先咱们先搞定404错误的根源——你的代码里有个明显的语法错误,直接导致Flask应用没法正常启动,客户端自然拿不到正确响应:

看你的导入语句:

from flask import Flask, jsonify, json, request from flask_pymongo import PyMongo

这行代码把两个导入写在同一行了,Python根本解析不了,应该拆成两行:

from flask import Flask, jsonify, json, request
from flask_pymongo import PyMongo

先把这个错误修复,启动应用时如果没有报错,404问题大概率就解决了。

接下来解决你要的多字段数据获取问题。你想要返回的格式是{ Results: [ {time1: "...", temp1: "..."}, {time2: "...", temp2: "..."}, ... ] },但当前代码只能拿到temp1相关数据,注释的代码还会引发问题,咱们根据两种常见的数据存储情况调整:

情况1:集合中每个文档包含完整的time1/temp1、time2/temp2、time3/temp3字段

如果你的thermo集合里的每个文档都同时有这三组字段,那可以直接遍历文档,提取所有需要的字段:

@app.route('/', methods=['GET'])
def get_all_logins():
    thermo = mongo.db.thermo
    output = []
    # 遍历集合里的每一条文档
    for doc in thermo.find():
        item = {}
        # 逐个检查并提取字段,避免不存在字段引发KeyError
        if 'time1' in doc and 'temp1' in doc:
            item['time1'] = doc['time1']
            item['temp1'] = doc['temp1']
        if 'time2' in doc and 'temp2' in doc:
            item['time2'] = doc['time2']
            item['temp2'] = doc['temp2']
        if 'time3' in doc and 'temp3' in doc:
            item['time3'] = doc['time3']
            item['temp3'] = doc['temp3']
        # 只把有数据的项加入结果
        if item:
            output.append(item)
    # 按照你要的格式返回,注意Results首字母大写
    return jsonify({'Results': output})

情况2:集合中每个文档只存一组timeX/tempX数据

如果集合里一个文档只存time1+temp1,另一个存time2+temp2,那我们可以把所有字段合并到一个字典里:

@app.route('/', methods=['GET'])
def get_all_logins():
    thermo = mongo.db.thermo
    combined_results = {}
    # 遍历所有文档,收集所有time和temp字段
    for doc in thermo.find():
        for key, value in doc.items():
            if key.startswith('time') or key.startswith('temp'):
                combined_results[key] = value
    # 包装成你需要的格式
    return jsonify({'Results': [combined_results]})

额外注意事项

  • 检查你的MongoDB连接URI:mongodb://pkitsos:GoLobo$@localhost:27017/admin是连接admin数据库,确认你的thermo集合确实在这个库中,不然要把URI里的admin改成你的目标数据库名
  • 确保MongoDB服务正在本地运行,账号密码正确
  • 启动应用后,可以用curl http://localhost:5000/测试返回结果,方便调试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:28:45