我知道如何將列表映射到字符串:
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 注入的攻擊。)