【问题标题】:Why doesn't my selected value from SQLite database put into a python variable not equal the same string in a different variable?为什么我从 SQLite 数据库中选择的值不放入 python 变量中,而不等于不同变量中的相同字符串?
【发布时间】:2021-01-11 10:51:59
【问题描述】:

我是一名初级程序员,正在使用烧瓶和 SQLite3 修补登录系统。用户从 HTML 表单输入信息,然后该表单被放入名为 logins 的数据库表中。输入效果很好,可以将数据输入数据库,但是当我尝试从数据库中选择数据时,我可以用这个打印一个特定的值:

rows = c.execute("SELECT password FROM logins")

其中密码是数据库中的一列。那部分工作正常。但是,当我尝试将单个单元格放入 python 变量中时,例如下面的 userCheck,我的 if 逻辑在比较两个值时不起作用。如果用户名 userCheck 和密码 passCheck 相同,仍然不会为 True。

@app.route("/login", methods=["GET","POST"])
def login():
    if request.method == "GET":
        return render_template("login.html")
    else:
        username = request.form.get("username")
        password = request.form.get("password")
        userCheck = c.execute("SELECT password FROM logins WHERE username = (?)", (username,))
        passCheck = c.execute("SELECT username FROM logins WHERE password = (?)", (password,))
        if username == userCheck and password == passCheck:
            return redirect("/")
        else: 
            error = "Username and Password don't match"
    return render_template("login.html", error=error)

我已经被困了一段时间,所以任何帮助都会很棒!

【问题讨论】:

    标签: python sqlite flask


    【解决方案1】:

    您必须获取数据库的结果,如下所示:

    userCheck = c.execute("SELECT password FROM logins WHERE username = (?)", (username,)).fetchall()[0][0]
    passCheck = c.execute("SELECT username FROM logins WHERE password = (?)", (password,)).fetchall()[0][0]
    

    【讨论】:

    • 当我使用 .fetchall()[0] 时,返回的值打印为 (password,) 和 (username,) 而不是预期的“密码”和“用户名”。我该如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多