繁体   English   中英

如何通过循环中的 SQL 语句传递变量? - Python

[英]How can I pass variables through an SQL statement in loop? - Python

conn=pyodbc.connect('Driver={SQL Server};'
'Server=test123;'
'Trusted_Connection=yes;')

data = []
date_x = ["202101","202010","202007"]
business_y = ["sales","marketing","tech"]
      
for i in date_x, business_y:
    sql_query = """ 
     Select name, period, business, purchase_date
     From test_table 
     Where period = ? #(date_x)
     AND business = ? #(business_y)
     """
     conn.execute(sql_query)
     data.append(pd.read_sql(sql_query, conn))

print(data)

我正在尝试通过循环运行此 SQL 语句,并且每次迭代我都想填充占位符“?” 使用上面示例中所示的正确变量并执行查询,将结果写入变量数据

这应该可行,假设 date_x 和 business_y 的长度总是相同的

data = pd.DataFrame()
date_x = ["202101","202010","202007"]
business_y = ["sales","marketing","tech"]
counter = 0
      
for i in date_x:
    sql_query = """ 
     Select name, period, business, purchase_date
     From test_table 
     Where period = {}
     AND business = {}
     """.format(date_x[counter], business_y[counter])
    counter +=1
    #print(sql_query)
    
    conn.execute(sql_query)
    data = data.append(pd.read_sql(sql_query, conn))

结果:

  Select name, period, business, purchase_date
 From test_table 
 Where period = 202101
 AND business = sales
 

 Select name, period, business, purchase_date
 From test_table 
 Where period = 202010
 AND business = marketing
 

 Select name, period, business, purchase_date
 From test_table 
 Where period = 202007
 AND business = tech

更新以显示如何执行并将结果存储到 DF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM