python - 在 Python 中通过 SQL 查询创建变量

标签 python sql flask

我正在尝试创建一个非常基本的登录。为此,我需要在“用户”表中存储与“用户名”匹配的“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']
  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”,并且您应该完成此操作。

关于python - 在 Python 中通过 SQL 查询创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121234/

相关文章:

php - 如何在一页中显示来自不同数据库表的数据

python - 在 Python flask 中调试请求/响应

python - 谷歌应用引擎 'No module named pwd'

php - 在 Woocommerce 中使用 SQL 从特定产品属性值获取产品 ID

python - 如何删除重叠的轮廓并将每个字符分离为单独的轮廓以提取字符?

python - 从txt文件中读取一定数量的行并以pythonic方式转换为列表

python - Django Python - 如何在一个 HTML 模板中显示来自不同表格的信息

mysql 在查询中获取空闲点

python-3.x - 在Docker容器和主机之间同步文件

python - 如何使用 Poetry 将 Python 包部署到 Gitlab 包注册表?