Python pandas read_sql中的“TypeError:'NoneType'对象不可编辑”

Python pandas read_sql中的“TypeError:'NoneType'对象不可编辑”,python,sql-server,pandas,pyodbc,Python,Sql Server,Pandas,Pyodbc,我正在尝试在python中使用pyodbc运行SQL命令。 其中SQL命令包含多个SELECT命令和IF语句 但我得到一个错误如下 columns = [col_desc[0] for col_desc in cursor.description] TypeError: 'NoneType' object is not iterable import pyodbc import pandas as pd conn = pyodbc.connect("DRIVER={SQL Server};"

我正在尝试在python中使用pyodbc运行SQL命令。 其中SQL命令包含多个SELECT命令和IF语句

但我得到一个错误如下

columns = [col_desc[0] for col_desc in cursor.description]
TypeError: 'NoneType' object is not iterable

import pyodbc
import pandas as pd
conn = pyodbc.connect("DRIVER={SQL Server};"
                "SERVER=server_name;"
                "DATABASE=master;"
                "Trusted_Connection=yes;")
cursor = conn.cursor()
script="""

If object_id ('tempdb..#Temp1')is not null
drop table #Temp1
Select distinct  a1.some_ID into #Temp1
from DOC.dbo.Document_tbl (NOLOCK)a1
from #Temp1 a1
If object_id ('tempdb..#Temp2')is not null
Drop table #Temp2
select distinct v2.some_data
into #Temp2 from tbl_name (nolock) v2 

If object_id ('tempdb..#Results')is not null
drop table #Results
select distinct a1.*,b1.####
into #Results
from #Temp1 a1
left join #Temp2 b1 on a1.## = b1.##
Select * from #Results
"""

df = pd.read_sql(script, cnxn)
writer = pd.ExcelWriter('result.xlsx')
df.to_excel(writer, sheet_name ='bar')
writer.save()

包含多个SQL语句的SQL命令文本称为匿名代码块。匿名代码块可以返回多个结果,其中每个结果可以是

行计数, 包含零行或多行数据的结果集,或 一个错误。 以下示例失败

sql=\ 选择1作为foo进入tmp; 从tmp中选择*; df=pd.read\u sql\u querysql,cnxn TypeError:“非类型”对象不可编辑 。。。因为第一个选择。。。INTO在第二个SELECT返回其结果集之前返回行计数

修复方法是启动匿名代码块,并启用SET NOCOUNT;这将抑制行计数并仅返回结果集:

sql=\ 不计数; 选择1作为foo进入tmp; 从tmp中选择*; df=pd.read\u sql\u querysql,cnxn 无误
错误表示光标中没有任何内容,基本上,这意味着您没有返回任何内容。请删除这些NOLOCK查询提示,除非您确切了解需要它们的原因以及使用它们的风险,包括检索无效数据和不存在的数据谢谢Gord Thompson