包含多个SQL语句的SQL命令文本称为 匿名代码块 。匿名代码块可以返回多个结果,每个结果可以是
- 行数
- 包含零个或多个数据行的结果集,或
- 一个错误。
以下示例失败…
sql = """SELECt 1 AS foo INTO #tmp;SELECT * FROM #tmp;"""df = pd.read_sql_query(sql, cnxn)# TypeError: 'NoneType' object is not iterable
…,因为第一个
SELECt ... INTO返回行计数,第二个
SELECT返回其结果集。
解决方法是启动匿名代码块,
SET NOCOUNT ON;该代码块将抑制行数并仅返回结果集:
sql = """SET NOCOUNT ON;SELECT 1 AS foo INTO #tmp;SELECT * FROM #tmp;"""df = pd.read_sql_query(sql, cnxn)# no error



