內爆列表以在 python MySQLDB IN 子句中使用

| | | | | | | | | | | | | | | |

我知道如何將列表映射到字符串:

foostring = ";".join( map(str, list_of_ids) ) 

而且我知道我可以使用以下內容將該字符串放入 IN 子句中:

cursor.execute("DELETE FROM foo.bar WHERE baz IN ("%s")" % ( foostring)) 

我需要的是使用 MySQLDB 安全地完成同樣的事情(避免 SQL 注入)。在上面的示例中,因為 foostring 沒有作為參數傳遞給執行,所以它很容易受到攻擊。我還必須在 mysql 庫之外引用和轉義。

(有一個相關的SO問題

a>,但那裡列出的答案要么不適用於 MySQLDB,要么容易受到 SQL 注入的攻擊。)