我正在研究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应用程序中加载数据库配置。
请帮忙解决这个问题。