使用Python通过html表单删除存储在SQL数据库中的任务

Posted

技术标签:

【中文标题】使用Python通过html表单删除存储在SQL数据库中的任务【英文标题】:Delete a task stored in SQL database through html form using Python 【发布时间】:2020-09-29 17:01:01 【问题描述】:

这是一个用Python编写的网络应用,用于添加和删除任务。

这是 add_tasks 函数:

@app.route("/add", methods=["GET", "POST"])
@login_required
def add():
    
    if request.method == "POST":                
        add = request.form.get("add")
        quantity = request.form.get("quantity")
        if not add:
            return apology("Please add an item")      
        
        db.execute("INSERT INTO history (add, quantity, user_id) VALUES (:add, :quantity, :user_id);", add=add, quantity=quantity, user_id=session["user_id"])

        return redirect("/")

    else:
        return render_template("add.html")

然后我的delete函数只将存储的项目从SQL数据库带到SELECT,以便删除它们。

@app.route("/delete", methods=["GET", "POST"])
@login_required
def delete():

    if request.method == "POST":
        db.execute("DELETE FROM history (add, quantity, user_id) VALUES (:add, :quantity, :user_id);", add=add, quantity=0, user_id=session["user_id"])

    else:
        rows = db.execute("SELECT add FROM history WHERE user_id=:user_id GROUP BY add",
                    user_id=session["user_id"])
        return render_template("delete.html", add=[row["add"] for row in rows])

此删除功能会导致内部服务器错误。它有什么问题?

【问题讨论】:

如果你想安静,端点应该是一样的,但一个用POST方法,另一个用DELETE 我知道,谢谢,我试图让它相似,但我无法让它工作(初学者问题) 好吧,你应该看看 SQL DELETE 语句:w3schools.com/sql/sql_delete.asp :) 谢谢,@RobinFrcd。我会看看并继续努力。 ;) 【参考方案1】:

最后,我的DELETE 函数的POST 部分是错误的。我设法找到了这个解决方案:

db.execute("DELETE FROM history WHERE user_id=:user_id and add=:add;", user_id=session["user_id"], add=add)

感谢RobinFrcd 的帮助!

【讨论】:

以上是关于使用Python通过html表单删除存储在SQL数据库中的任务的主要内容,如果未能解决你的问题,请参考以下文章

统计商户24个月连续流水总月数存储过程

将日期从 HTML 表单传递到 servlet 到 SQL 数据库

读取每一行HTML表单提交Python

批量删除Sql Server对象(表,存储过程,触发器)

6Python全栈之路系列之MySQL存储过程

如何在 Toad 中使用 PL/SQL 提交 HTML 表单?