Несколько SQL запросов, содержащих каждый элемент в списке Python в операторе LIKE - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь запустить несколько SQL queries, где оператор LIKE содержит каждый элемент списка в Python. У меня длинный список строк

l = ['string1', 'string2', 'string3',....]

query_1 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[0]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[0])
query_2 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[1]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[1])
query_3 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[2]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[1])

и т. Д.

Как мне выполнить несколько запросов, а затем объединить их? Можно ли использовать функцию execute для нескольких запросов или она может работать только с одним? Могу ли я использовать для l oop?

EDIT: в предыдущей версии этого вопроса я спрашивал о выполнении запроса ONE с несколькими элементами списка в операторе LIKE. Я понял, что последний запрос был примерно таким:

SELECT COUNT(request) FROM table WHERE request LIKE 'l[0]' OR LIKE 'l[1]' OR LIKE 'l[2]' AND DATE BETWEEN 'date1' AND 'date2'.

Это было не то, что мне нужно.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Вы можете использовать f-строки с l oop

l = ['string1', 'string2', 'string3']
res = []
for x in l:
    query = f"SELECT COUNT(request) FROM table WHERE request LIKE '{x}' AND DATE BETWEEN 'date1' AND 'date2'"
    cursor.execute(query)
    res.append(cursor.fetchone()[0])
1 голос
/ 04 августа 2020

Если вы не ищете параллельное выполнение, просто выполните следующее ( псевдокод )

l = ['string1', 'string2', 'string3',....]

query_1 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[0]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[0])
query_2 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[1]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[1])
query_3 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[2]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[1])
result = [] 
query_lst = [query_1 ,query_2 ,query_3]
for query in query_lst:
   temp = query.execute()
   result.append(temp) 

Если вас интересует параллельное выполнение - см. Этот пример

https://pythonprogramming.net/values-from-multiprocessing-intermediate-python-tutorial/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...