在Python中从SQL查询创建变量

问题描述 投票:3回答:1

我正在尝试创建一个非常基本的登录。为此,我需要在“users”表中存储与“username”匹配的“id”。无论我尝试过什么,它都只会给我一份清单。 我正在关注一个在线课程,我不能使用大多数SQLAlchemy快捷方式 - 只是老式的SQL命令。我正在使用Python 3和Flask来构建它。

@app.route("/login", methods=["GET","POST"])

def login():
if request.method == "GET":
    return render_template("login.html")

if request.method == "POST":
    #find user in users table
    username = request.form["username"]
    rows = db.execute("SELECT id FROM users WHERE username=:username",{"username": username}).fetchall()
    session["user_id"] = rows.id
    return render_template("success.html", rows=rows)

如果id为1,则字面上返回:'(1,)'

python sql flask
1个回答
2
投票

你必须使用fetchall()。例如:

rows = db.execute("""SELECT id FROM users WHERE username='%s'"""
                 %(str(username)))
username_string = rows.fetchall()

#You should have a list dictionary. 

如果你想从username_string中获取ID,你可以这样做:

user_id = username_string[0]
user_id_final = user_id['id']
  1. 我在这里做的是创建了行变量,它只是在db.execute函数中使用“SELECT”语句的结果。
  2. 我们存储了结果,该结果应该是与该用户名(1)对应的id。我们使用fetchall方法来抓取它。我们将它存储在一个名为username_string的变量中(或者你可以称之为id_string)。
  3. 我们创建了另一个名为user_id的变量,它被设置为等于username_string中的第一个索引。这应该为您提供您正在寻找的ID的键/值对。
  4. 最后一个变量是user_id_final,它将'id'的值存储在键/值对中。如果那是与该用户名对应的ID,那么它应该等于'1',你应该完成。
© www.soinside.com 2019 - 2024. All rights reserved.