Я пытаюсь выполнить запрос SQL, который извлекает уникальные идентификаторы из столбца файла Excel для использования в качестве ввода операторов в Python (PYODBC).
Я пытаюсь переписать часть кода SAS моей компании, так как мы переходим на Python позже в этом году.Программа берет файл .xls и использует данные в каждом столбце в качестве входных данных в предложении «WHERE _ IN ()».В идеале это будет повторять каждый столбец, каждый раз принимая значения столбца, используя их в качестве ограничений запроса, а затем записывая файл .txt с выводом из прогона SQL.Надеюсь, я объясняю, что ясно
Это прекрасно работает, если я вручную копирую / вставляю все значения столбцов непосредственно в оператор 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!
Фактические результаты = "Ошибка синтаксиса" ... не так уж много, чтобы уйтидействительно
... ле вздох ...