【问题标题】:Create a Variable from SQL query in Python在 Python 中从 SQL 查询创建变量
【发布时间】:2018-03-05 23:39:17
【问题描述】:

我正在尝试创建一个非常基本的登录。为此,我需要将与“用户名”匹配的“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,)'

【问题讨论】:

  • 您可以尝试使用fetchval() 而不是fetchall()。 (fetchval() 是对 DB API 的 pyodbc 扩展。)

标签: python sql flask


【解决方案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']
  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”,并且您应该完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2016-12-02
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多