Flask - 在第一次请求之前加载的重新加载数据库

时间:2017-04-28 09:13:49

标签: mongodb python-3.x flask

我在flask上运行了一个连接到MongoDB的API,它只使用这个DB进行读取。 我在第一次请求之前连接到db:

@app.before_first_request
def load_dicti():
    c = MongoClient('mongodb://' + app.config['MONGO_DSN'], connect=False)
    db = c.my_name
    app.first, app.second = dictionary_compilation(db.my_base, another_dictionary)

但是,这个mongodb可能会不时更新。我的API并不了解它,因为这个db在第一次请求之前已经加载了。

最有效的方法是什么?我很感激解释和代码示例。

1 个答案:

答案 0 :(得分:0)

我不太明白你要做什么,但Application Context可能是最好的做法。就像Flask docs中的demo一样,您可以这样做:

IQueryable<Table1> src1=...;
IQueryable<Table2> src2=...;


var merged=src1.Select(x=>new {test=x.test, rainbow=x.rainbow, Alias=string.Empty}).Concat(src1.Select(x=>new {test=x.test, rainbow=x.rainbow, Alias=x.Alias}));

然后,您可以直接在视图函数中使用def get_db(): """Opens a new database connection if there is none yet for the current application context. """ if not hasattr(g, 'db'): c = MongoClient('mongodb://' + app.config['MONGO_DSN'], connect=False) g.db = c.my_name return g.db ,只有当get_db()中没有db attr时,mongdb才会被绑定一次。

如果您的连接不稳定,您需要每次更改它,您可以连接每个请求或每个session