我有一个包含字符串的列表:
list = ['abc', 'cbd', 'bdc']
我想将其用作SQL查询中的输入,例如:
query=('SELECT * from table where column1 in list')
为了使SQL对列表的这3个项目运行,最好的方法是什么?
答案 0 :(得分:2)
生成这样的SQL文本(this is a brief explanation why)通常是一个坏主意。常见的数据库访问库将为您执行查询参数替换(对于PostgreSQL的psycopg和对于MySQL的MySQLdb都可以这样做,不确定其他人)。
也就是说,如果您非常确定在数组中传递的值是安全的,则可以执行类似
的操作my_list =['abc', 'cbd', 'bdc'] # do not call your variable list, list is a type
query = 'SELECT * from table where column1 in {}'.format(tuple(my_list))
答案 1 :(得分:0)
首先,您可以将列表转换为字符串,然后将其添加到查询中:
My_list =['abc', 'cbd', 'bdc']
slist=" '"
for i in My_list:
slist+= i.strip()+"', '"
slist=slist[:-3]
query='''SELECT * from table where column1 in (%s)'''%slist