【发布时间】:2020-04-28 22:25:38
【问题描述】:
我知道如何将列表映射到字符串:
foostring = ",".join( map(str, list_of_ids) )
而且我知道我可以使用以下方法将该字符串放入 IN 子句中:
cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % (foostring))
我需要的是使用 MySQLDB 安全地完成同样的事情(避免 SQL 注入)。在上面的示例中,因为 foostring 没有作为参数传递给执行,所以它很容易受到攻击。我还必须在 mysql 库之外引用和转义。
(有一个related SO question,但那里列出的答案要么不适用于 MySQLDB,要么容易受到 SQL 注入的攻击。)
【问题讨论】:
-
您也许可以从 php stackoverflow.com/questions/327274/… 中完成的类似问题中获得一些灵感
-
@mluebke 关于在查询中传递多个列表有什么想法吗?