python - 无法从 MYSQL DB 中检索用户名...我做错了什么?
问题描述
新手编码员在这里:)
我有一个带有“用户”表的 MYSQL 数据库设置。在我的 Flask 应用程序中,我可以让用户创建登录凭据。当用户正确登录时 - 我希望他们的名字 {{ session.name }},而不是用户名,显示在重定向页面上。不知何故,我无法让它工作。我可以显示他们的用户名 {{ session.username }},但这不是我想要的。
不知何故,它没有从数据库中获取名称。
我不确定我是否通过会话进行了正确的数据库调用。
我的数据库如下所示:
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() 方法或之前的数据库调用。提前致谢
解决方案
您应该收到一条错误消息。
如果你只给了一个参数,即使后面什么都没有,你仍然需要加一个逗号。
只获得所需的数据就足够了,仅此而已
result = cursor.execute("SELECT name,password FROM users WHERE username = %s", (Username,))
最后请不要以纯文本形式保存密码
推荐阅读
- typescript - 访问 typescript 接口定义中定义的值
- javascript - 没有body-parser的express中的输入JSON在哪里?
- python - 试图围绕python函数
- javascript - 使用 create-react-app 构建开发/调试构建
- python - 如何找到 Seaborn 版本
- angular - Symfony REST API - 如何处理无效表单
- bash - 检查目录是否存在并计算与其中模式匹配的文件
- java - hamcrest 匹配器不匹配相等的问题
- rest - oauth2 的 Swashbuckle.AspNetCore 问题总是让我收到 401 的请求
- java - 来自多个类的重写方法