通过表单传递数据库用户名和密码,以便在Flask App中进行数据库连接

时间:2018-08-18 12:31:30

标签: python flask

我正在研究flask应用程序,该应用程序连接到DB2数据库并从数据库获取数据,但仅当用户通过表单输入其DB2数据库用户名和密码时才可以。我在数据库连接登录表单(应用程序也有一个应用程序用户登录名)中使用WTF元素,下面是我要尝试的操作,已将所有数据库连接参数放置在路由中

class DBForm(FlaskForm):
DBuser = StringField('DB.Username', validators=[DataRequired(), Length(1, 20)])
DBpass = PasswordField('DB.Password', validators=[DataRequired()])
remember_me = BooleanField('Remember me')

@app.route('/', methods=['GET', 'POST'])
    def home():
    form = DBForm()
    if form.validate_on_submit():
        USER_ID = form.DBuser.data 
        USER_PASS = form.DBpass.data
        conn = ibm_db.connect("DATABASE=WDLAB; HOSTNAME=127.0.0.1; PORT=10000; PROTOCOL=TCPIP;UID=USER_ID;PWD=USER_PASS;", "", "")
        cur = db2.conn.cursor()
        cur.execute('select * from JOB_ROLE')
        data = cur.fetchall()        
        return render_template('index.html',form=form,data=data)
    return render_template('index.html', form=form)
    conn.close()

HTML

<div class="container">
                {{form.csrf_token }}
                {{form.DBuser.label }}
                {{form.DBuser }}
                {{form.DBpass.label }}
                {{form.DBpass }}
                {{form.remember_me }}

                <button type="submit">Connect</button>
            </div>

这会将连接参数传递给数据库,但无法连接不正确的用户名和密码错误,我在想这是否是因为此方法中的用户名和密码未在单个内部传递conn中的引号,当我将其传递给conn时,试图将引号串联起来,但结果也相同。请请求专家帮助

1 个答案:

答案 0 :(得分:0)

您必须用表格数据替换DSN中的用户名和密码:

conn = ibm_db.connect("DATABASE=WDLAB; HOSTNAME=127.0.0.1; PORT=10000; PROTOCOL=TCPIP;UID={};PWD={};".format(USER_ID, USER_PASS), "", "")