【问题标题】:How can I delete rows from a database table where the ID isn't found in a tuple/list如何从元组/列表中找不到 ID 的数据库表中删除行
【发布时间】:2019-05-31 19:21:50
【问题描述】:

假设我有一组 ID:

ids = (1,2,3,4,5)

使用 python,我想从不包含这些 ID 之一的数据库表(称为计划)中删除每一行。

这是我尝试过的:

delete_stmt = "DELETE from schedule WHERE ID NOT IN %s"
...
cursor.execute(delete_stmt, ids)

我已经排除了连接数据库等不必要的代码,但我连接正常。

我收到一条错误消息:

You have an error in your SQL syntax...

如何修复我的代码以从调度表中删除在 ids 元组中找不到的行?

【问题讨论】:

  • 你不能参数化元组;每个元组元素都需要一个参数。
  • 如果我不知道元组有多长,我该怎么做?
  • 通常它涉及动态构造具有相应数量的参数的查询字符串。我对python不是很熟悉,this有帮助吗?

标签: python mysql list tuples


【解决方案1】:

IN是MySql函数,用()试试吧

delete_stmt = "DELETE from schedule WHERE ID NOT IN (%s)"

【讨论】:

  • 当我到达执行行时,这会产生一个错误,提示 "Not all parameters were used in the SQL statement"
  • WTF ^^ 好的,那么你必须调试这个语句,如果可能的话,请告诉我你解析的 stmt。数据库布局也很好......
  • 尝试delete_stmt = """DELETE from schedule WHERE ID NOT IN (%s)""" 并用逗号设置“计划”:“`”。你也可以看看这个帖子:stackoverflow.com/questions/20818155/…
猜你喜欢
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 2022-07-15
  • 2021-11-01
  • 2020-02-16
相关资源
最近更新 更多