如何使用用户输入表单创建flask sqlalchemy数据库uri并传递给flask应用程序配置对象

时间:2017-11-22 12:33:28

标签: flask flask-sqlalchemy

我正在研究flask app并尝试创建用户输入表单,用户可以通过该表单连接到他们的数据库。我只想为用户提供功能,以便他们可以使用用户界面从flask应用程序连接到数据库而不是在config.py文件中提供所有配置值。

我编写了视图函数来渲染flask wtform并接受来自表单的输入并创建sqlalchemy数据库uri而不是视图函数。我无法创建sqlalchemy数据库uri作为全局,以便它可以传递给flask应用程序对象。 / p>

__ init __。py

from flask import Flask,render_template,request
from flask_bootstrap import Bootstrap
from app.forms import ConnectDB  

def create_app():
   app = Flask(__name__)
   Bootstrap(app)
   app.config['SECRET_KEY'] = "123456789"

@app.route('/')
def index():
    form = ConnectDB()
    return render_template('index.html', form=form )
@app.route('/connect/' , methods=['GET','POST'])

def connect():
    form = ConnectDB()
    if request.method == 'POST' and form.validate():
        database = form.database.data
        username = form.username.data
        password = form.password.data
        host = form.host.data 
        port = form.port.data
        database_name = form.database_name.data

        uri = "{DATABASE_DIALECT}://{DB_USER}:{DB_PASSSWORD}@{DB_ADDRESS}:
               {DB_PORT}/{DATABASE_NAME}".format(DATABASE_DIALECT =database,
                DB_USER = username,DB_PASSSWORD = password,DB_ADDRESS =host,
                DB_PORT = port,DATABASE_NAME = database_name)

      config['SQLALCHEMY_DATABASE_URI'] = uri

from app.models import db
db.init_app(app)

# Blueprints   
from app.views import geoit
app.register_blueprint(geoit)

return app

我知道SQLALCHEMY_DATABASE_URI变为本地连接视图功能,无法访问视图外。

但我不知道其他可能的方式,以便我可以使用用户输入在flask应用程序中加载数据库配置。

请帮忙解决这个问题。

0 个答案:

没有答案