我正在研究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
时,试图将引号串联起来,但结果也相同。请请求专家帮助
答案 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), "", "")