当前位置: 首页 > 知识库问答 >
问题:

在Flask中存储和访问字典数据[复制]

韩乐湛
2023-03-14

我有一个Flask RESTful服务,我想在初始化期间将JSON文件作为字典读取,然后在某些GET请求期间从中读取数据。这本词典必须每天更新一次。

这就是我尝试使用Flask全局变量所做的-

app.py

import json

from flask import Flask
from flask import g

from api import api


def create_app(config_file='settings.py'):
    app = Flask(__name__)
    app.config.from_pyfile(config_file)
    api.init_app(app)
    with app.app_context():
        f = open('data.json')
        g.data = json.loads(f.read())
    return app


app = create_app()

feat_api.py

from flask_restplus import Resource, reqparse, fields, Model
from flask import g

from extensions.restplus import api

ns = api.namespace('feat', description='Feature')


parser = reqparse.RequestParser()
parser.add_argument('id', type=str, required=True)


@ns.route('/')
class Feature(Resource):
    @api.expect(parser)
    def get(self):
        args = parser.parse_args()
        return {"data": g.data[args['id']]}

我得到以下错误-AttributeError:“\u AppCtxGlobals”对象在进行API调用时没有属性“data”

共有1个答案

东郭自珍
2023-03-14

最简单的方法是将字典保存为pickle文件,并在每次需要时加载它:

import pickle

a = {'hello': 'world'}

with open('filename.pickle', 'wb') as handle:
    pickle.dump(a, handle)

with open('filename.pickle', 'rb') as handle:
    b = pickle.load(handle)

更新:

或者,您可以像创建应用程序时那样保存它,并在每次更新时保存变量:

def create_app(config_file='settings.py'):
app = Flask(__name__)
app.config.from_pyfile(config_file)
api.init_app(app)
with app.app_context():
    f = open('data.json')
    app.config['data'] = json.loads(f.read())
return app

feat_api.py

import current_app
@ns.route('/')
class Feature(Resource):
    @api.expect(parser)
    def get(self):
        args = parser.parse_args()
        return {"data": current_app.config['data']}
 类似资料:
  • 如何在Swift中到达以下字典中的第二个整数(键)?而且,当我这样做的时候,我怎样才能找到第二个字典里的字串呢? 我尝试编写(例如)var test:Int=activeCustomers[1][1],但这不起作用。它说字典里没有一个叫下标的成员。

  • 问题内容: 这是flask代码: 这是: 该文档似乎非常清楚这应该工作: 形成 包含来自POST或PUT请求的已解析表单数据的MultiDict。请记住,文件上传不会在此处结束,而是在files属性中结束。 args 具有查询字符串的已解析内容的MultiDict。(URL中问号后的部分)。 价值观 一个同时包含form和args内容的CombinedMultiDict。 有什么想法我做错了吗?

  • 问题内容: 我需要将字典保存在模型字段中。我怎么做? 例如,我有此代码: 我应该为“ bill_products =“写什么,以便从我的产品模型到此帐单保存一些随机产品? 这是账单的模型说明: 以及产品的型号说明: 如果还有什么我要补充的请发表评论。谢谢! 问题答案: 我刚刚发现了django-jsonfield软件包,该软件包 是可重用的Django字段,可让您在模型中存储经过验证的JSON。

  • 问题内容: 我习惯于使用.csv文件将数据导入和导出Python,但这存在明显的挑战。关于在json或pck文件中存储字典(或字典集)的简单方法有何建议?例如: 我想知道如何保存此内容,然后如何将其重新加载。 问题答案: 泡菜 保存: 有关该参数的其他信息,请参见pickle模块文档。 酸洗 负荷: JSON 保存: 提供额外的参数,例如或以获得漂亮的结果。参数 sort_keys 将按字母顺序对

  • 我无法从Databrikcs访问Azure Data Lake Storage。 我没有高级Azure Databricks服务。我正在尝试按照最新的文档直接访问ADLS Gen 2:https://learn . Microsoft . com/en-us/azure/data bricks/data/data-sources/azure/adls-Gen 2/azure-data lake-G

  • 我正在将一个数组从jade存储到MongoDB中。 例如,input(name='name[]',type='text')->firstname,input(name='name[]',type='text')->lastname(只需例如)。所以我有一个名称数组。我已经使用模式(“name”:array)存储到mongodb中,并且这些值被存储为“name”:[['firsname','last

  • 主要内容:本节引言:,1.Android文件的操作模式,2.文件的相关操作方法,3.文件读写的实现,4.读取SD卡上的文件,5.关于原生模拟器SD卡的问题,6.读取raw和assets文件夹下的文件,代码下载:,本节小结:本节引言: 嘿嘿,看到这个题目,相信部分读者会问,你前面的Fragment写完了吗?嗯,没写完,因为想例子,需要 一点时间,为了提高效率,所以决定像多线程一样,并发的来写教程,这样可能可以加快写教程的进度, 到现在为止,刚好写了60篇,离完成入门教程还很远呢,而前面也说过,想在

  • 问题内容: 我有一本包含字典的字典,其中可能还包含字典,例如 目前,我正在打开包装以获取ID 001的“开单至”,“交易参考” a1,如下所示: 我忍不住觉得这有点笨拙,尤其是最后两行-我觉得以下内容应该可以工作: 有没有一种更简单的方法可以向下钻取嵌套字典而不必解压缩临时变量? 问题答案: 实际有效。是表示的表达式,因此您可以在其中进行查找。对于实际程序,我更喜欢使用面向对象的方法来嵌套字典。对