通过循环上的SQL语句传递Python列表

时间:2019-01-15 18:43:10

标签: python pyodbc

我试图弄清楚如何通过SQL中的where语句将列表作为参数传递,我无法编写所需的内容,但是下面是所需的内容。

这就是我要做的一个参数...。 x = 1 sql = """Select t1,t2,t3,t4 from database where t1= ? """ cur.execute(sql,x)

我需要的例子

X = [1,2,3,4]
Select t1,t2,t3,t4 from database where t1= 1
Select t1,t2,t3,t4 from database where t1= 2
Select t1,t2,t3,t4 from database where t1= 3
Select t1,t2,t3,t4 from database where t1= 4

我尝试的示例不起作用。...

X = [1,2,3,4]
sql = """Select Select t1,t2,t3,t4 from database where t1= ? """
example=[]
i = 0
for item in X:
    while i < len(x)
        row = cur.execute(sql,item)
        i +=1
        example.append(row)

2 个答案:

答案 0 :(得分:0)

我认为应该 cursor.execute("""Select t1, t2, t3, t4 from database where t1 in ('1', '2', '3', '4')""")

答案 1 :(得分:0)

如果您要做的是循环遍历ID列表并将行添加到名为example的列表中,则可以只构建动态IN子句并一次检索所有行:

X = [1, 2, 3, 4]
qmarks = ','.join('?' * len(X))  # ?,?,?,?
sql = f"SELECT * FROM tablename WHERE t1 IN ({qmarks})"  # SELECT * FROM tablename WHERE t1 IN (?,?,?,?)
example = crsr.execute(sql, X).fetchall()