我在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在第一次请求之前已经加载了。
最有效的方法是什么?我很感激解释和代码示例。
答案 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。