【问题标题】:Pandas Pivot - "TypeError: 'NoneType' object is not iterable"Pandas Pivot - “TypeError:'NoneType' 对象不可迭代”
【发布时间】:2015-11-04 11:56:02
【问题描述】:

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()

错误

columns = [col_desc[0] for col_desc in cur.description]

TypeError: 'NoneType' 对象不可迭代

【问题讨论】:

  • 请将其限制为一个问题,例如将 pivot_table 上的第二个问题拆分为另一个问题。
  • 关于第一个问题,你能显示cnxn.execute(sql_status_20).fetchall()的输出吗? (这将测试查询本身,而不是将数据放入数据框中)
  • 谢谢乔里斯。 fetchall() “pyodbc.ProgrammingError: No results. Previous SQL is not a query”的结果。看来python无法处理高级查询。查询在 Studio 管理器中有效。

标签: python sql pandas pivot nonetype


【解决方案1】:

老问题,但我遇到了与上述相同的问题。问题在于USE [HilltopSamplerFix]。连接字符串中已经提到了数据库名称,因此可以删除这部分。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,删除 USE [DatabaseName] 子句解决了这个问题。我还在连接字符串中指定了数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-05
      • 2012-08-25
      • 1970-01-01
      • 2020-01-11
      • 2017-08-29
      相关资源
      最近更新 更多