我有一个python列表,比如l
l = [1,5,8]
Run Code Online (Sandbox Code Playgroud)
我想编写一个sql查询来获取列表中所有元素的数据
select name from students where id = |IN THE LIST l|
Run Code Online (Sandbox Code Playgroud)
我该如何做到这一点?
我知道如何将列表映射到字符串:
foostring = ",".join( map(str, list_of_ids) )
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用以下内容将该字符串转换为IN子句:
cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % (foostring))
Run Code Online (Sandbox Code Playgroud)
我需要的是使用MySQLDB安全地完成同样的事情(避免SQL注入).在上面的示例中,因为foostring不作为参数传递来执行,所以它很容易受到攻击.我还必须在mysql库之外引用并转义.
(有一个相关的SO问题,但那里列出的答案要么对MySQLDB不起作用,要么易受SQL注入攻击.)