我正在尝试创建一个非常基本的登录。为此,我需要在“用户”表中存储与“用户名”匹配的“id”。
无论我尝试过什么,它只会给我返回一个列表。
我正在学习在线类(class),但无法使用大多数 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,)'
最佳答案
您必须使用 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']
我在这里所做的是创建行变量,它只是在 db.execute 函数中使用“SELECT”语句的结果。
我们存储的结果应该是与该用户名 (1) 对应的 id。我们使用fetchall方法来抓取它。我们将其存储在名为 username_string 的变量中(或者您可以将其称为 id_string)。
我们创建另一个名为 user_id 的变量,该变量设置为等于 username_string 中的第一个索引。这应该会为您提供您正在寻找的 id 的键/值对。
最后一个变量是 user_id_final,它存储键/值对中“id”的值。如果这是与该用户名对应的 ID,则该值应等于“1”,并且您应该完成此操作。
关于python - 在 Python 中通过 SQL 查询创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121234/