如何根据用户输入从 SQL 表中删除项目?

Posted

技术标签:

【中文标题】如何根据用户输入从 SQL 表中删除项目?【英文标题】:How to delete an Item from an SQL table based on user entry? 【发布时间】:2020-05-27 19:36:41 【问题描述】:

我正在尝试在 mysql 数据库中存储商品、网址和价格,并希望为用户提供基于名称删除商品的选项。我试图通过使用 DELETE sql 语句来做到这一点,但它只返回“0 item removed”,我猜它无法找到条目,无论是它没有接受输入还是什么。任何帮助将不胜感激,因为我真的很想掌握这个!

def deleteItem(): 
    goneItem = input("Enter item: ")
    removeItem = "DELETE FROM amazon_items WHERE itemName = '%s'"
    mycursor.execute(removeItem, goneItem)
    db.commit()
    print(mycursor.rowcount, "item removed")

【问题讨论】:

【参考方案1】:

尝试删除 %s 周围的单引号,您应该将 %s 的值作为元组传递

def deleteItem(): 
    goneItem = input("Enter item: ")
    removeItem = "DELETE FROM amazon_items WHERE itemName = %s"
    mycursor.execute(removeItem, (goneItem,))
    db.commit()
    print(mycursor.rowcount, "item removed")

【讨论】:

【参考方案2】:

Hi LearningCode 欢迎来到 ***,

mycursor.execute(removeItem, (goneItem,))

试试这个。

您可以在文档中的here 中看到您需要包含一个逗号以使第二个参数成为一个元组。

【讨论】:

你好。感谢您的帮助!进行您建议的更改后,我仍然发现存在问题的错误,并会在错误中显示“项目名称”。我想问题的一部分是我使用双引号的方式,这导致了它的问题,所以不得不将查询更改为“查询”而不是“查询”。 在更改 Python 字符串文字引号的过程中,我假设您删除了 %s? 周围的引号?这就是问题所在。

以上是关于如何根据用户输入从 SQL 表中删除项目?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JDBC 根据用户输入从 SQL 数据库中检索数据? [复制]

根据用户选择/输入从集合中过滤对象

如何根据多个条件从 SQL Server 中删除大量数据

如何在搜索数组时修复盲目 SQL 注入,该注入可能会根据用户输入而改变

如何使用 PHP、SQL 和 Microsoft Access 将另一个表中的 select max 函数和用户输入的变量插入表中?

使用 PL SQL 删除