首页 > 解决方案 > 包含 LIKE 运算符中 Python 列表中每个元素的多个 SQL 查询

问题描述

我正在尝试运行多个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功能,还是只能与一个查询一起使用?我会使用 for 循环吗?

编辑:在这个问题的上一个版本中,我询问了在运算符中运行一个包含多个列表元素的查询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'.

那不是我需要的。

标签: pythonsqllistiteration

解决方案


您可以将f 字符串与 for 循环一起使用

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])

推荐阅读