首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask-pymongo RuntimeError:在应用程序上下文之外工作

Flask-pymongo RuntimeError:在应用程序上下文之外工作
EN

Stack Overflow用户
提问于 2019-07-11 13:52:44
回答 1查看 199关注 0票数 1

我正在使用flask-pymongo编写一个程序来读取基于id字段的mongodb文档。但是我得到了错误,谁能告诉我我哪里错了?

代码:

代码语言:javascript
复制
from flask import Flask, make_response, jsonify
from flask_pymongo import PyMongo
from collections import OrderedDict
from bson import json_util
import json

app = Flask('__name__')
app.config['MONGO_DBNAME'] = 'db_name'
app.config['MONGO_URI'] = 'mongodb://192.168.55.24:27017/db_name'
mongo_connection = PyMongo(app)

@app.route('/')
def index(inp_id):
    collection = mongo_connection.db.table_name
    one_record = collection.find_one({'id': inp_id})
    obj_str = json_util.dumps(one_record)
    obj_dict = json.loads(obj_str, object_hook=OrderedDict)
    return make_response(jsonify(obj_dict), 200)

if __name__ == '__main__':
    index('5cd00a468b36db516b6d2f16')   # I think this is where I'm going wrong

给我以下错误:

代码语言:javascript
复制
RuntimeError: Working outside of application context.

如果我直接在inp_id的位置传递id值,我会得到结果,但我试图写一个泛型的结果。

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 15:03:55

Flask有一个应用程序上下文,您可能需要使用app.app_context()才能使其工作。

应用程序上下文在请求、命令或其他活动期间跟踪应用程序级数据。不是将应用程序传递给每个函数,而是访问current_appg代理。

试试这个:

代码语言:javascript
复制
def index(inp_id):
    with app.app_context():
        collection = mongo_connection.db.table_name
        one_record = collection.find_one({'id': inp_id})
        obj_str = json_util.dumps(one_record)
        obj_dict = json.loads(obj_str, object_hook=OrderedDict)
        return make_response(jsonify(obj_dict), 200)

有关更多信息,请阅读Flask Application context

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56982395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档