Pandas Pivot - TypeError: объект «NoneType» не является итерируемым

Pandas read_SQL не работает, я пытаюсь получить доступ к сводной функции SQL (пример 1). Я попытался прочитать все данные, но Pandas также не обрабатывает данные.

ПРИМЕР 1

sql_status_20 = """
SET NOCOUNT ON
USE [HilltopSamplerFix]

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)

select @ColumnName = STUFF((SELECT distinct ',' +
QUOTENAME(Name)
FROM [Hilltopsamplerfix].[dbo].[tempHilltopWaterQualityExtractAll]
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '');


SET @DynamicPivotQuery =
N'SELECT
SiteID,SiteName,RunDate,SampleTime,SampleID,' + @ColumnName + '
FROM [Hilltopsamplerfix].[dbo].[tempHilltopWaterQualityExtractAll]
PIVOT(max(Value)
FOR Name IN (' + @ColumnName + ')) AS PVTTable'

EXEC sp_executesql @DynamicPivotQuery
"""
connection_string = '...works...'
cnxn = pyodbc.connect(connection_string)
test = pd.read_sql(sql_status_20, cnxn)
cnxn.close()

ОШИБКА

столбцы = [col_desc[0] для col_desc в cur.description]

TypeError: объект «NoneType» не является итерируемым


person PythonGeo    schedule 12.08.2015    source источник
comment
Пожалуйста, ограничьте его одним вопросом, например, разделите второй вопрос по сводной_таблице на другой вопрос.   -  person joris    schedule 12.08.2015
comment
Что касается первого вопроса, можете ли вы показать результат cnxn.execute(sql_status_20).fetchall()? (это проверит сам запрос, не помещая данные в кадр данных)   -  person joris    schedule 12.08.2015
comment
Спасибо Джорис. Результат от fetchall() pyodbc.ProgrammingError: Нет результатов. Предыдущий SQL не был запросом. Похоже, python не может обрабатывать сложные запросы. Запрос работает в Studio manager.   -  person PythonGeo    schedule 12.08.2015


Ответы (2)


Старый вопрос, но у меня была такая же проблема, как упоминалось выше. Проблема заключается в USE [HilltopSamplerFix]. Имя базы данных уже упоминается в строке подключения, поэтому эту часть можно удалить.

person Stefan Hessels    schedule 04.01.2018

У меня была аналогичная проблема, и удаление предложения USE [DatabaseName] устранило проблему. У меня также была база данных, указанная в моей строке подключения.

person Boba Fett    schedule 17.12.2019