Как сохранить динамический сводный запрос к фрейму данных Pandas? - PullRequest
0 голосов
/ 24 июня 2019

Итак, я создал динамический сводный запрос, который отлично работает в SQL Server Management Studio.

Код динамического сводного запроса:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(PatternID) 
                    from loglist
                    group by PatternID
                    order by PatternID
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT FileName,' + @cols + ' from 
             (
                select FileName, PatternID, Found
                from loglist
            ) x
            pivot 
            (

                sum(Found)
                for PatternID in (' + @cols + ')
            ) p '

execute(@query);

Вывод:

f   1   1   1   NULL    NULL    NULL
q   1   1   1   NULL    NULL    NULL
e   1   1   1   NULL    NULL    NULL
s   NULL    NULL    NULL    0   0   0

Теперь я хочу сохранить эти данные в кадре данных Pandas, а также в виде файла .csv автоматически.

Итак,

def analytics():
    db = pyodbc.connect(driver="**", 
                        host="**", 
                        database="**", 
                        trusted_connection="**", 
                        user="**", 
                        password="**", 
                        port="**")
    cur = db.cursor()
    textfile = open('analytics.script', 'r')
    filetext = textfile.read()    
    textfile.close()
    print(filetext)
    cur.execute(SqlCommand)  
    # store it in pandas Data Frame here.
analytics()

Но он показывает эту ошибку:

DataError: ('22018', "[22018] [Microsoft][SQL ***][SQL Server]Conversion failed when converting the nvarchar value 'long file name here' to data type int. (245) (SQLExecDirectW)")

analytics.script содержит динамический сводный запрос.

Что здесь делать?

Заранее спасибо

...