包含多个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