【问题标题】:Why are there brackets around the response from database?为什么数据库的响应周围有括号?
【发布时间】:2021-12-13 02:39:44
【问题描述】:

我试图了解我们可以从数据库中获得的不同值 '''

        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-sha256$29000$bs1Z6z0HYOw9R4hR6t37nw$.ZtoRLUsZCYmkbRVNTiZt1uLLQwuJ.iyxrNcHg43SYA',)

tmppass['password'] = $pbkdf2-sha256$29000$bs1Z6z0HYOw9R4hR6t37nw$.ZtoRLUsZCYmkbRVNTiZt1uLLQwuJ.iyxrNcHg43SYA

[tmppass_1 仅从数据库中获取哈希值正在打印带有括号][1]的字符串

【问题讨论】:

    标签: python database postgresql authentication flask-sqlalchemy


    【解决方案1】:

    一般来说,Python 中的(x,) 是一个具有单个元素的元组。

    由于您使用的是SELECT *,因此会返回一个元组(即使表中只有一列)。这是一种设计选择,以实现所有 SELECT * 查询之间的一致性,而不管实际列数是多少(特别是,如果稍后将列添加到 SELECT * 查询中使用的表中,则确保现有代码不会中断)。

    【讨论】:

    • 为了得到实际值,我会做类似''' tmppass_1[0] '''
    • @somebodycoding 正确
    • 现在可以使用了,谢谢
    猜你喜欢
    • 2016-04-21
    • 2016-06-04
    • 1970-01-01
    • 2012-08-01
    • 2015-11-01
    • 2019-05-25
    • 2018-06-24
    • 2012-11-16
    相关资源
    最近更新 更多