【问题标题】:Using JSON as a datastore with Flask?使用 JSON 作为 Flask 的数据存储?
【发布时间】:2019-01-23 23:02:57
【问题描述】:

我有一个问题需要一些意见。我有一个小的 JSON 文件,我正在用作数据存储。

{"stress": [1, "good"], "physical": [6, "ok"], "mood": [8, "good"], "perception": "neutral", "spoons": 74}

基本上,我在 pi 上的烧瓶中运行了一个用于 alexa 服务的 webhook。并且全天更新此数据存储。即:如果您通过一个意图,那么它会将压力更新为 4。这不是应用程序。这是一个独立的安装部件,可以在本地、房间内运行,并且根本不需要扩展。

最好的方法是什么?我是否应该将此 JSON 文件存储在根文件夹中并导入它然后写出来?我应该看一下 tinyDB 之类的东西吗?我应该扔进 Flask 的静态文件夹吗?

再说一次,超级小东西,不需要扩展。没有多个用户。我觉得像 postgres 或完整的数据库之类的东西是矫枉过正的。

【问题讨论】:

    标签: python json flask


    【解决方案1】:

    我有类似的东西......它在实际的生产服务器上运行。但是,用户永远不会超过 100 个。对于您的用例,没问题。

    在我的 Flask 路由之上,我有两个简单的函数可以读取/写入 JSON 数据存储区。 我会亲自在您的应用程序中创建一个名为“datastore”的单独文件夹,然后将其保留在那里。这是一个简单的例子:

    def write_json(path, json_data):
        with open(path, 'w') as file_out:
            json.dump(json_data, file_out)
    
    
    def read_json(path):
        with open(path) as file_in:
            return json.load(file_in)
    
    
    # begin Flask views/routes
    @app.route('/user_form', methods=['POST', 'GET'])
    def user_form():
        path = "/home/myapp/datastore/store.json"
    
    
        # input from form or wherever your new JSON is coming from...
        # It could also be coming from a REST API etc:
        input = request.form['data']
        # {"new": "data"}
    
    
        # read in existing JSON
        existing_json = read_json(path)
        # {"existing": "json"}
    
    
        # add new JSON to existing JSON however you see fit
        [(k, v)] = input.items()
        existing_json[k] = v
        {"existing": "json", "new": "data"}
    
    
        # now update datastore
        write_json(path, existing_json)
    
    
        # could also be app.response or jsonify here etc...
        return render_template("success.html")
    

    等等……

    只需将路径变量设置为存储文件的位置...

    因此,一旦您的代码运行并且您有一个准备好添加到数据存储区的值,请调用 read 函数,将您的新数据添加到 JSON 对象,然后立即调用 write 函数来重写新更新的JSON 返回到同一个文件。

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 2010-10-25
      • 2011-04-30
      • 2013-05-20
      • 2011-12-05
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2012-11-13
      相关资源
      最近更新 更多