【发布时间】:2018-09-24 12:13:03
【问题描述】:
我需要从 sqlite3 表中删除多行,使用如下 SQL 语句:
DELETE FROM table WHERE id IN (23, 19, 35, 16, 12, 78)
我的问题是用 Python 编写代码,并将 ids 放在一个列表中。以下不起作用,产生语法错误:
cursor.execute('DELETE FROM table WHERE id IN ?', (id_list,))
我尝试将列表转换为元组,结果相同。任何想法应该是什么正确的语法,拜托?
编辑: 当然,我不希望必须遍历列表逐个删除行,因为那样会非常低效。
PS。管理员已指出此问题与this 的相似之处。但是,这个问题是关于 DML 语句(删除),而那个问题是关于 DATA 语句(选择)。区别可能看起来很表面,但实际上很关键,因为 SQLITE3 允许 executemany 命令用于 DML 语句,但不能用于数据语句。因此,这两个问题的答案大相径庭。
【问题讨论】: