繁体   English   中英

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

[英]Flask-pymongo RuntimeError: Working outside of application context

我正在编写一个程序,使用flask-pymongo基于id字段读取mongodb文档。 但是我出错了,有人可以告诉我我要去哪里错吗?

码:

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

给我以下错误:

RuntimeError: Working outside of application context.

如果我将id值直接替换为inp_id,则会得到结果,但我正在尝试编写一个通用值。

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

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

尝试这个 :

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应用程序上下文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM