将Excel文件中的值插入SELECT语句的WHERE ... IN子句

时间:2019-02-02 04:59:42

标签: python sql pyodbc where-in

我正在尝试执行一个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” ...实际上没有什么

...叹气...

0 个答案:

没有答案