Я использую функцию pandas .read_sql_query для чтения из нескольких sql файлов. Один запрос выдает ошибку в одном конкретном бите, который я выделил.
(python бит - ничего не указано c и работает с другими запросами)
@contextmanager
def open_db_connection(connection_string):
pyodbc.pooling = False
connection = pyodbc.connect(connection_string)
try:
yield connection
except pyodbc.DatabaseError as err:
error, = err.args
sys.stderr.write(error.message)
finally:
connection.close()
noCount = """ SET NOCOUNT ON; """
with open_db_connection(connection_string) as conn:
res = pd.read_sql_query(noCount+queryObj, conn)
Следующий бит sql выдает ошибку, и я понятия не имею, почему это может быть так. Предыдущие операторы и различные временные таблицы работают и могут быть собраны с помощью pandas .read_sql_query (), однако в следующем бите он прерывается.
IF OBJECT_ID('tempdb..#test1') IS NOT NULL DROP TABLE #test1;
select t.PositionID, b.SecurityID
into #test1
from #tmp as t
inner join placeholder.dbo.items as b on (b.PositionID = t.PositionID and b.StudyDate = '20191230')
where t.ast = 'eq';
IF OBJECT_ID('tempdb..#test2') IS NOT NULL DROP TABLE #test2;
select t.PositionID,
case
when count(i.beta_index)=0 then 1
else count(i.beta_index)
end as noIndex
into #test2
from #test1 as t
left join #beta_index as i on (t.SecurityID = i.isin)
group by t.PositionID;
select * from #test2
Это должно вернуть данные из test2. Одно замечание - он отлично работает с SQL Server Management Studio.