Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从SQL查询创建变量_Python_Sql_Flask - Fatal编程技术网

在Python中从SQL查询创建变量

在Python中从SQL查询创建变量,python,sql,flask,Python,Sql,Flask,我正在尝试创建一个非常基本的登录。为此,我需要在“用户”表中存储与“用户名”匹配的“id”。 它只会给我一个列表,尽管不管我做了什么尝试 我正在学习一门在线课程,但我不能使用大多数SQLAlchemy快捷方式——只能使用老式的SQL命令。我正在使用Python3和Flask来构建它 @app.route("/login", methods=["GET","POST"]) def login(): if request.method == "GET": return render_tem

我正在尝试创建一个非常基本的登录。为此,我需要在“用户”表中存储与“用户名”匹配的“id”。 它只会给我一个列表,尽管不管我做了什么尝试

我正在学习一门在线课程,但我不能使用大多数SQLAlchemy快捷方式——只能使用老式的SQL命令。我正在使用Python3和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. 
如果要从用户名\字符串中获取ID,可以执行以下操作:

user_id = username_string[0]
user_id_final = user_id['id']
  • 我在这里所做的是创建了row变量,它只是在db.execute函数中使用“SELECT”语句的结果

  • 我们存储的结果应该是与该用户名(1)对应的id。我们使用fetchall方法来获取它。我们将其存储在一个名为username\u string(也可以称之为id\u string)的变量中

  • 我们创建另一个名为user_id的变量,该变量被设置为等于username_字符串中的第一个索引。这将为您查找的id获取键/值对

  • 最后一个变量是user_id_final,它将“id”的值存储在键/值对中。如果该用户名对应的ID是“1”,则该值应等于“1”,并且您应该这样做


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