2017-10-05 37 views
0

我尝试使用mongoengine连接mongodb数据库与动态连接。我从URL请求获取数据库名称。问题是它只连接了第一个url数据库。使用mongoengine动态连接到mongodb数据库

这里是mycode的

run.py

from application import app 
if __name__ == '__main__': 
    app.run(host='0.0.0.0', port=8089) 

routes.py

from flask import request 
from application import app 
from mongoengine import connect 

class DBConnection(): 
    def __init__(self): 
     database = request.url.split("/")[2].split(".")[0] 
     print(database) 
     connect(database,alias='default') 

@app.route('/',methods=['GET']) 
def index(): 
    try: 
     DBConnection(); 
     return redirect(url_for('dashboard')) 
    except Exception as e: 
     raise e 

在上面的代码时,我打网址mydomain.maindomain.com它将连接mydomai ñ和命中URL yourdomain.maindomain.com将与YOURDOMAIN

的问题是,它只有一个数据库连接进行连接。例如我第一次打mydomain.maindomain.com然后数据库是每个时间MYDOMAIN连接即使我打yourdomain.maindomain.com其显示MYDOMAIN数据库记录。

+0

为什么你存储'routes'?每个请求都需要新的'db_connection',但默认存储。还有一点,如何在分开的请求中携带数据库连接?使用'MongoClient',像这样''从pymongo导入MongoClient; c = MongoClient('localhost',27017); c [param_X] .what_you_do_with_this' – dsgdfg

+0

mongoengine提供模型功能,如果我使用MongoClient然后获取查询是db.foo.find_one (...)如果我使用mongoengine只是做model.objects()它的容易。 –

回答

0

我不认为你需要使用不同的数据库。只需为每个用例使用不同的集合,然后用Flask-MongoEngine包装应用程序。

PS。更好地了解变量作用域在Flask中的工作方式。

相关问题