使用Python列表信息删除MYSQL中的多行
如果有一个列表 LL:
LL = ['foo', 'bar', 'noo', 'boo',]
这个列表里的内容在一个 MySQL 数据库表中,想要在 ID 列里测试这些 ID 是否存在。
我可以用下面的方式来删除所有在 LL 列表中的 ID 所对应的行:
csr.execute("""DELETE FROM test.test WHERE ID = "Foo"; """)
csr.execute("""DELETE FROM test.test WHERE ID = "bar"; """)
csr.execute("""DELETE FROM test.test WHERE ID = "noo"; """)
csr.execute("""DELETE FROM test.test WHERE ID = "boo"; """)
那我该怎么用程序来实现这个呢?
6 个回答
1
for item in LL:
csr.execute("DELETE FROM test.test WHERE ID = '%s'", item)
像这样吗?
2
在MySQL中,你需要用 %s
来代替 ?
作为参数的标记。还有,别忘了提交你的更改。
product_list = [645, 64, 9785, 587]
query = "DELETE FROM products WHERE id IN (%s)" % ",".join(["%s"] * len(product_list))
cursor.execute(query, product_list)
connection.commit()
12
你可以通过一个简单的查询来实现:
id_list = ['abc', 'def', 'ghi']
query_string = "delete from test where id in (%s)" % ','.join(['?'] * len(id_list))
cursor.execute(query_string, id_list)
因为在执行替换时,cursor.execute会对字符串进行处理,所以这个例子是安全的,不会受到SQL注入攻击的影响。