无法从MYSQL数据库中检索用户名。。。我做错了什么?

2024-05-03 23:36:58 发布

您现在位置:Python中文网/ 问答频道 /正文

新手程序员:)

我有一个MYSQL数据库设置和一个“用户”表。在我的Flask应用程序中,我可以让用户创建登录凭据。当用户登录时,正确-我希望他们的名称{{session.name}而不是用户名显示在重定向页面上。不知怎的,我不能让它工作。我可以显示他们的用户名{{session.username},但这不是我想要的

不知何故,在某个地方,它并没有从DB那里得到名字

我不确定是否通过会话进行了正确的DB调用

我的数据库如下所示:

MariaDB [chrimata]> DESCRIBE users; +---------------+--------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(100) | YES | | NULL | | | email | varchar(50) | YES | | NULL | | | username | varchar(30) | YES | | NULL | | | password | varchar(100) | YES | | NULL | | | register_date | timestamp | NO | | current_timestamp() | | +---------------+--------------+------+-----+---------------------+----------------+

这是我的登录码:

@app.route('/login', methods=['GET', 'POST']) def login(): msg='' if request.method == "POST" : details = request.form Username = details['username'] Password_candidate = details['password'] # Check if account exists using MySQL cursor = mysql.connection.cursor() # Check DB for username... result = cursor.execute("SELECT * FROM users WHERE username = %s", [Username]) if not Username and not Password_candidate : error = 'Please fill out the form!' return render_template('login.html', msg=error) if result > 0: #get the stored hash account = cursor.fetchone() password = account['password'] Name = account['name'] if Password_candidate == password: session['login_in'] = True session['username'] = Username session['name'] = Name

我怀疑是fetchone()方法导致了这个问题,或者是它之前的DB调用。 提前谢谢


1条回答
网友
1楼 · 发布于 2024-05-03 23:36:58

你应该得到一条错误消息

如果只给出了一个参数,那么即使后面没有任何参数,也必须加逗号

仅获取所需的数据就足够了,仅此而已

result = cursor.execute("SELECT name,password FROM users WHERE username = %s", (Username,))

最后,请不要以明文形式保存密码

相关问题 更多 >