我正在尝试执行一个SQL查询,该查询从excel文件列中获取唯一ID,以用作Python(PYODBC)中的where语句输入。
由于我们将于今年晚些时候改用Python,因此我试图重新编写公司的SAS代码。该程序将获取一个.xls文件,并将每一列中的数据用作“ WHERE _ IN()”子句中的输入。理想情况下,这将遍历每列,每次获取列值,将它们用作查询约束,然后使用SQL运行的输出写入.txt文件。希望我能解释清楚
如果我直接在cur。()语句中直接复制/粘贴所有列值,则效果很好,但是出于实用目的,能够从excel文件中读取它们是关键。有什么想法吗?我已经尝试了几乎所有内容,但是还有很多东西要学习,以至于我确定自己甚至还没有刮过表面。我的逻辑在这里似乎是正确的,但是由于我得到的唯一错误是“语法错误或访问冲突”,因此很难诊断出我弄错了哪一部分。
非常感谢您的任何输入或帮助!
import pandas as pd
import numpy as np
import pyodbc
con = pyodbc.connect('DSN=**;UID=**;PWD=**')
cur=con.cursor()
df = pd.read_excel('file.xls', sep='\s+')
#Create array of Column Names
name = np.array(df.columns.values)
###Create Arrays of ID Values###
placements = []
for i in name:
info = df[i]
placements.append(info)
####Combine Names and Values for iteration###
placements_out = np.column_stack((name,placements))
###Try to make a cool SQL code###
sql=”””select distinct VALUES_I_NEED
from ODBC_TABLE
where FIRST_RESTRAINT=Value
and placement_ids in (select * from placements_out)""")
### Execute said SQL Code. Do this over every column, writing the output from each into its own .txt file:###
for i in name:
cur.execute(sql)
cur.fetchall()
f.write(“%s\n” % i)
f.close()
预期结果=一切顺利,请查看所有这些.txt文件!
Actual Results =“ Syntax Error” ...实际上没有什么
...叹气...