这是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)