python - TypeError: get_bind() 得到了一个意外的关键字参数
问题描述
我正在尝试在烧瓶中使用数据库
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
在其中我创建了一个基本的登录页面和一个注册页面,当我尝试使用 html 代码时:
<form action="/login" method="post">
<input autocomplete="off" autofocus name="username" placeholder="Username" type="text">
<input class="form-control" name="password" placeholder="Password" type="password">
<button class="btn btn-primary" type="submit">Log In</button>
<li style="list-style-type:none;"><a href="/register">Register</a></li>
</form>
在这个 python 烧瓶代码上:
# This is the log in page
@app.route("/login", methods=["GET", "POST"])
def login():
"""Log user in"""
# Forget any user_id
session.clear()
# User reached route via POST (as by submitting a form via POST)
if request.method == "POST":
# Ensure username was submitted
if not request.form.get("username"):
return "must provide username", 403
# Ensure password was submitted
elif not request.form.get("password"):
return "must provide password", 403
# Query database for username
rows = db.execute("SELECT * FROM users WHERE username = :username",
username=request.form.get("username"))
# Ensure username exists and password is correct
if len(rows) != 1 or not check_password_hash(rows[0]["hash"], request.form.get("password")):
return "invalid username and/or password", 403
# Remember which user has logged in
session["user_id"] = rows[0]["id"]
# Redirect user to home page
return redirect("/")
# User reached route via GET (as by clicking a link or via redirect)
else:
return render_template("login.html")
我收到此错误:
TypeError: get_bind() got an unexpected keyword argument 'username'
我连接了数据库,并设置了所有其他变量,包括 flask_debug。我不确定出了什么问题或如何测试它。谁能帮我弄清楚为什么我会收到这个错误?
解决方案
postgresql 查询的语法有错误。更具体地说,是对数据进行清理以避免 sql 注入。
正确的语法是
db.execute("SELECT * FROM users WHERE username = :username", {"username": request.form.get("username")})
此代码中还有更多错误。例如
if len(rows) != 1:
您无法提取查询的 len。但是,可以使用函数检查查询的行数.rowcount()
,如果 0 表示搜索返回为空。
推荐阅读
- reactjs - 从类组件中反应功能组件中的访问值
- android - 在 google map api 上更改 Android Cluster 的吸引力
- c# - 如何从 URL 调用中捕获参数
- python - 独立级联模型的高效 Python 实现
- javascript - 无法在 scss 中导入字体
- python-3.x - 如何使用默认列表和下拉菜单中的 1 个字典使 tkinter 组合框循环在课堂上工作?
- c# - odata nextLink 出现在每个响应中
- python - 模式匹配python,如何在python中使用矩阵?
- python - 迁移学习音频分类
- python - Python正确格式错误中的字符串到日期时间