擅长:python、mysql、java
<p>你想要的SQL是</p>
<pre><code>select name from studens where id in (1, 5, 8)
</code></pre>
<p>如果你想用python来构造这个</p>
<pre><code>l = [1, 5, 8]
sql_query = 'select name from studens where id in (' + ','.join(map(str, l)) + ')'
</code></pre>
<p>函数<a href="http://docs.python.org/library/functions.html#map" rel="noreferrer">map</a>将把列表转换成字符串列表,这些字符串可以使用<a href="http://docs.python.org/library/stdtypes.html#str.join" rel="noreferrer">str.join</a>方法用逗号粘合在一起。</p>
<p>或者:</p>
<pre><code>l = [1, 5, 8]
sql_query = 'select name from studens where id in (' + ','.join((str(n) for n in l)) + ')'
</code></pre>
<p>如果您喜欢<a href="http://docs.python.org/glossary.html#term-generator-expression" rel="noreferrer">generator expressions</a>而不是map函数。</p>
<p>更新:<a href="https://stackoverflow.com/users/10661/slott">S. Lott</a>在注释中提到Python SQLite绑定不支持序列。如果那样的话,你可能会想要</p>
<pre><code>select name from studens where id = 1 or id = 5 or id = 8
</code></pre>
<p>产生者</p>
<pre><code>sql_query = 'select name from studens where ' + ' or '.join(('id = ' + str(n) for n in l))
</code></pre>