SQL-IN在python中的使用

SQL-IN在python中的使用,python,mysql,sql,Python,Mysql,Sql,我有一个python中的ID列表。例如: x = [1,2,3,4,5,6] 我想在my(mysql)数据库中选择一个记录列表,条件是这些记录的ID在x中。如下所示: SELECT * FROM mytable WHERE id IN x 但我不知道谁可以用python来做这件事。我见过一些在sql字符串中使用%s的示例。但是,当变量是列表时,这不起作用。有人知道我怎么做吗? 谢谢好吧,如果大家都知道这些号码都是信誉良好的,那么你只需打个电话就可以了 "SELECT * FROM mytab

我有一个python中的ID列表。例如:

x = [1,2,3,4,5,6]
我想在my(mysql)数据库中选择一个记录列表,条件是这些记录的ID在x中。如下所示:

SELECT * FROM mytable WHERE id IN x
但我不知道谁可以用python来做这件事。我见过一些在sql字符串中使用%s的示例。但是,当变量是列表时,这不起作用。有人知道我怎么做吗?
谢谢

好吧,如果大家都知道这些号码都是信誉良好的,那么你只需打个电话就可以了

"SELECT * FROM mytable WHERE ID IN ({0})".format(','.join(x))
如果您知道它们是数字,但其中任何一个可能来自用户,那么我可能会使用:

"SELECT * FROM mytable WHERE ID IN ({0})".format(','.join(list(map(int,x))))

format
将在适当的索引处执行替换。使用join是为了使您没有
[]
。list将所有内容转换为列表,map将函数应用于list/tuple/iterable。然而,在Python3中,map返回一个生成器,这不是您所需要的。你需要一份清单。因此,list(map(x,y))将返回map(x,y)的列表形式。

尝试以下方法:

'(%s)' % ','.join(map(str,x))
这将为您提供一个字符串,您可以使用它作为子句中的有效
发送到MySql:

(1,2,3,4,5,6)

应该注意的是,Andrew的方法也可以工作,但我更喜欢格式,因为它是一种更跨语言的语法。如果x是空列表,请小心,因为“IN()”似乎不是有效的语法(至少对于SQL Server而言)。