如何使用Python列表中的值查询SQLite数据库?



这是Python特有的,因此不是很有帮助。

我有一个id列表

[120931, 129301923, 1293019, 193923, 42939]

,而不是为它们每个运行一个命令,例如

for row in c.execute(f'SELECT * from sdk WHERE app = 120931'):
print(row)

我想在'app'的id的整个列表中传递,并获得每一行这些id出现。与下面类似,但是在查询

中使用一个变量(python列表)
for row in c.execute(f'SELECT * from sdk WHERE app IN (120931, 129301923, 1293019, 193923, 42939)'):
print(row) # passes entire list in parens but as a Python variable

我已经尝试过字符串插值,但它不工作。

您可以使用str.join为sqlIN语句提供适当的格式:

apps = [120931, 129301923, 1293019, 193923, 42939]
c.execute(f'SELECT * from sdk WHERE app IN ({", ".join(map(str, apps))})')

但是,如果apps包含字符串值,则可以在语句中使用?符号。这样,您就可以让sqlite3处理语句的正确格式:

c.execute(f'SELECT * from sdk WHERE app IN ({", ".join(["?"]*len(apps))})', apps)

最新更新