为什么数据库的响应周围有括号?
Why are there brackets around the response from database?
我试图了解我们可以从数据库中获取的不同值
'''
tmppass = db.execute("SELECT * from users WHERE username=:username", {"username": session['user_id']}).fetchone()
tmppass_1 = db.execute("SELECT password from users WHERE username=:username", {"username": session['user_id']}).fetchone()
old_password = request.form.get('old_password')
newpass_1 = request.form.get('new_password_1')
newpass_2 = request.form.get('new_password_2')
hashOfNewPass = str(pbkdf2_sha256.hash(newpass_1))
oldPassHash = pbkdf2_sha256.hash(old_password)
print(tmppass['password'])
print(tmppass_1)
'''
我从 tmppass 和 tmppass_1
的数据库中得到不同的结果
tmppass_1 = ('$pbkdf2-sha256000$bs1Z6z0HYOw9R4hR6t37nw$.ZtoRLUsZCYmkbRVNTiZt1uLLQwuJ.iyxrNcHg43SYA',)
tmppass['password'] = $pbkdf2-sha256000$bs1Z6z0HYOw9R4hR6t37nw$.ZtoRLUsZCYmkbRVNTiZt1uLLQwuJ.iyxrNcHg43SYA
[tmppass_1 仅从数据库中获取散列值正在打印带有方括号的字符串][1]
一般来说,Python中的(x,)
是一个只有一个元素的元组。
由于您使用的是 SELECT *
,因此会返回一个元组(即使 table 中只有一列)。这是一种设计选择,目的是在所有 SELECT *
查询之间实现一致性,而不管实际的列数如何(具体而言,如果稍后将列添加到 table 使用的列,则确保现有代码不会中断在 SELECT *
查询中)。
我试图了解我们可以从数据库中获取的不同值 '''
tmppass = db.execute("SELECT * from users WHERE username=:username", {"username": session['user_id']}).fetchone()
tmppass_1 = db.execute("SELECT password from users WHERE username=:username", {"username": session['user_id']}).fetchone()
old_password = request.form.get('old_password')
newpass_1 = request.form.get('new_password_1')
newpass_2 = request.form.get('new_password_2')
hashOfNewPass = str(pbkdf2_sha256.hash(newpass_1))
oldPassHash = pbkdf2_sha256.hash(old_password)
print(tmppass['password'])
print(tmppass_1)
'''
我从 tmppass 和 tmppass_1
的数据库中得到不同的结果tmppass_1 = ('$pbkdf2-sha256000$bs1Z6z0HYOw9R4hR6t37nw$.ZtoRLUsZCYmkbRVNTiZt1uLLQwuJ.iyxrNcHg43SYA',)
tmppass['password'] = $pbkdf2-sha256000$bs1Z6z0HYOw9R4hR6t37nw$.ZtoRLUsZCYmkbRVNTiZt1uLLQwuJ.iyxrNcHg43SYA
[tmppass_1 仅从数据库中获取散列值正在打印带有方括号的字符串][1]
一般来说,Python中的(x,)
是一个只有一个元素的元组。
由于您使用的是 SELECT *
,因此会返回一个元组(即使 table 中只有一列)。这是一种设计选择,目的是在所有 SELECT *
查询之间实现一致性,而不管实际的列数如何(具体而言,如果稍后将列添加到 table 使用的列,则确保现有代码不会中断在 SELECT *
查询中)。