我需要使用 SQL 语句从 sqlite3 表中删除多行,例如:
DELETE FROM table WHERE id IN (23, 19, 35, 16, 12, 78)
Run Code Online (Sandbox Code Playgroud)
我的问题是用 Python 进行编码,并将 ids 放在列表中。以下不起作用,会产生语法错误:
cursor.execute('DELETE FROM table WHERE id IN ?', (id_list,))
Run Code Online (Sandbox Code Playgroud)
我尝试将列表转换为元组,结果相同。请问正确的语法应该是什么?
编辑:当然,我不希望必须遍历列表来一一删除行,因为这会非常低效。
附言。管理员指出了这个问题与这个的相似之处。然而,这个问题是关于 DML 语句(删除),而那个问题是关于 DATA 语句(选择)。这种差异可能看起来很表面,但实际上很关键,因为 SQLITE3 允许将executemany命令与DML 语句一起使用,但不能与数据语句一起使用。因此,两个问题的答案是截然不同的。