Запустите SQL-запрос, используя список Python - PullRequest
0 голосов
/ 20 марта 2019

У меня есть список со строками:

list = ['abc', 'cbd', 'bdc']

Я хочу использовать его в качестве ввода в запросе SQL, например:

query=('SELECT * from table where column1 in list')

Каков наилучший способ сделать это для запуска SQL для этих 3 элементов списка?

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Обычно генерировать SQL-текст, как этот, плохая идея (, это краткое объяснение, почему ). Обычные библиотеки доступа к базе данных сделают замену параметров запроса за вас (это делают psycopg для PostgreSQL и MySQLdb для MySQL, не уверенный в других).

Тем не менее, если вы очень-очень уверены, что значения, которые вы передаете в массив, безопасны, вы можете сделать что-то вроде

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))
0 голосов
/ 20 марта 2019

Сначала вы можете преобразовать список в строку, а затем добавить его к вашему запросу:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...